Json.net属性:单值或值数组

时间:2009-05-23 16:56:31

标签: c# json.net

我对JSON.Net库有疑问。通常我有一个像这样的XML字符串:

<Config>
  ....
  <Name>some name</Name>
  ....
</Config>

然后我使用JSON.Net库将字符串转换为json字符串,如下所示:

Congif: {
   ...
   Name: "some name",
   ...
}

最后,我将这个json字符串映射到Config类的实例:

Config instance = JsonConvert.DeserializeObject<Config>(json);

如果name属性是我的Config类中的名称数组:

class Config {
   ....
   public string[] Name { get; set; }
   ....
}

据我所知,在json字符串中,数组定义如下:

  Name: ["some name"],

由于我从XMl字符串转换了json字符串,因此我可能有一个或多个Name节点。当XMl中只定义了一个Name时,这会给您带来麻烦。我会得到异常抱怨它无法将字符串转换为字符串[]。如果在XML文件中定义了多个Name节点,那就没问题了。

当映射看到目标属性时,不确定是否有任何方法或选项让JSON库自动将其转换为字符串数组Name是一个数组类型属性,即使Name只有一个值?

1 个答案:

答案 0 :(得分:1)

我认为我必须接受JSON.Net的方式。如果jsonString包含键的字符串值,那么它应该将值转换为字符串值而不是字符串数组,即使映射属性是数组类型。

我可以做的是在XML字符串中添加一个空值节点,使其像XML字符串中只有一个节点一样,或者将空值节点添加到所有现有节点中。

唯一的问题是数组附加了一个空条目。