我在C#中使用JSON连接到相当广泛的在线服务,并注意到它们使用相同的名称和不同的值(和类型)。
在创建JSON模型时,我遇到了不同模型需要不同值类型的问题。
例如。
namespace Mylibrary
{
// event
public class event
{
public Item item { get; set; }
public string type { get; set; }
}
public class Item
{
public string url { get; set; }
public string icon { get; set; }
}
// context
public class context
{
public Item item { get; set; }
public string creator { get; set; }
}
public class Item
{
public int index { get; set; }
public string name { get; set; }
}
}
如果我重命名上面的项目类,我就不能再使用json反序列化器了。但是,当然我得到了一个编译器错误,因为重复的类名" Item"。
我需要为此服务生成超过30个数据模型。仔细观察他们的架构,对于超过90%的模型来说,这将成为一个问题。模型本身非常大,上面的例子是我遇到的用于说明问题的简化示例。
在考虑这个问题时,我认为这是一个相当普遍的事情。这是如何处理的?
答案 0 :(得分:2)
正如@mecek指出的那样,重要的是属性名称,而不是类名。所以只需给出类的唯一名称:
EventItem
ContextItem
然后您可以使用JsonProperty
重命名属性:
public class Context
{
[JsonProperty("item")]
public ContextItem Item { get; set; }
[JsonProperty("creator")]
public string Creator { get; set; }
}