【发布时间】:2018-09-21 19:28:15
【问题描述】:
我在将 JSON 序列化为具有字典属性的类时遇到问题。
整个过程有点复杂,作为输入,我有一个 YAML 文件,我使用 YamlDotNet 和 NewtonSoft like so 将其转换为 json
这是 Yaml 和 JSON 输出的示例
some_element: '1'
should_be_dic_element:
- a: '1'
- b: '2'
{
"some_element": "1",
"should_be_dic_element": [
{
"a": "1"
},
{
"b": "2"
}
]
}
还有班级
public class SomeClass
{
[JsonProperty(PropertyName = "some_element")]
public string SomeProperty { get; set; }
[JsonProperty(PropertyName = "should_be_dic_element")]
public Dictionary<string, string> Dictionary { get; set; }
}
我知道数组字典的问题,所以这就是我尝试过的所有方法。
使用字典我得到以下内容
错误无法将当前 JSON 数组(例如 [1,2,3])反序列化为类型“System.Collections.Generic.Dictionary`2[System.String,System.String]”,因为该类型需要 JSON 对象(例如 {"name":"value"}) 以正确反序列化。 要修复此错误,请将 JSON 更改为 JSON 对象(例如 {"name":"value"})或将反序列化类型更改为数组或实现集合接口的类型(例如 ICollection、IList),例如可以从 JSON 数组反序列化。 JsonArrayAttribute 也可以添加到类型中以强制它从 JSON 数组中反序列化
像这样使用字典中的新类
[JsonArray]
class X : Dictionary<string, string> { }
错误值不能为空。 参数名称:key
使用KeyValuePair<string, string>[] / List<KeyValuePair<string, string>> 结果是元素的数量,但具有空值。
有什么建议吗?
【问题讨论】:
标签: c# json dictionary json.net yamldotnet