我有一个关于 JSON.Net 库的问题。通常我有一个像这样的 XML 字符串:
<Config>
....
<Name>some name</Name>
....
</Config>
然后我使用 JSON.Net 库将字符串转换为 json 字符串,如下所示:
Congif: {
...
Name: "some name",
...
}
最后我将这个 json 字符串映射到 Config 类的一个实例:
Config instance = JsonConvert.DeserializeObject<Config>(json);
如果名称属性是我的 Config 类中的名称数组:
class Config {
....
public string[] Name { get; set; }
....
}
我知道在 json 字符串中,数组是这样定义的:
Name: ["some name"],
因为我得到了一个从 XMl 字符串转换而来的 json 字符串,所以我可能在那里有一个或多个 Name 节点。当 XMl 中只定义一个名称时,这会给我带来麻烦。我会得到异常提示它不能将字符串转换为字符串[]。如果XML文件中定义了多个Name节点就OK了。
不确定是否有任何方法或选项设置让 JSON 库在映射看到目标属性名称是数组类型属性时自动将其转换为字符串数组,即使名称只有一个值?
最佳答案
我想我必须接受 JSON.Net 的方式。如果 jsonString 包含键的字符串值,那么它应该将该值转换为字符串值而不是字符串数组,即使映射属性是数组类型也是如此。
我能做的是,如果 XML 字符串中只有一个节点,则向 XML 字符串添加一个空值节点,使其像节点数组一样,或者无论如何向所有现有节点添加空值节点。
唯一的问题是数组中附加了一个空条目。
关于c# - Json.net 属性 : single value or array of values,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/901919/