当字段名包含空格时,反序列化JSON
我正在编写一个读取JSON文件的工具。 我正在使用NewtonSoft工具将JSOn反序列化为C#类。 这是一个示例片段:
"name": "Fubar", ".NET version": "4.0", "binding type": "HTTP",
字段名称包含空格和C#标识符中无效的其他字符(。)。 这样做的正确方法是什么?
(很遗憾,我没有更改JSON格式的选项。)
使用JsonProperty
属性指示JSON中的名称。 例如
[JsonProperty(PropertyName = "binding type")] public string BindingType { get; set; }
不知道为什么,但这对我不起作用。 在这个例子中,我每次都只为“BindingType”返回一个null。 我实际上发现将Json结果作为字符串下载更容易,然后执行以下操作:
myString = myString.Replace(@"binding type", "BindingType")
您将在反序列化之前执行此操作。
一点点的文字也少了。 虽然这在我的例子中起作用,但在某些情况下可能没有。 例如,如果“绑定类型”不仅是字段名称而且是一段数据,则此方法将改变它以及可能不希望的字段名称。