3

我对 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 中只定义一个名称时,这会给我带来麻烦。我会收到异常抱怨它无法将字符串转换为字符串 []。如果在 XML 文件中定义了多个 Name 节点,则可以。

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

4

1 回答 1

1

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

如果 XML 字符串中只有一个节点,我可以做的是向 XML 字符串添加一个空值节点,使其类似于节点数组,或者无论如何都向所有现有节点添加空值节点。

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

于 2009-05-30T22:43:06.177 回答