处理重复的数据模型名称
Handling duplicate data models names
我正在使用 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; }
}
}
如果我重命名上面的项目 class 我就不能再使用 json 反序列化器。但是,由于重复的 class 名称 "Item".
,我当然会收到编译器错误
我需要为此服务生成超过 30 个数据模型。在仔细观察他们的模式时,这将成为超过 90% 的模型的问题。模型本身非常大,上面的示例是我 运行 用来说明问题的简化示例。
在考虑这个问题时,我敢打赌这将是一个相当普遍的现象。这是如何处理的?
正如@mecek 指出的那样,重要的是 属性 个名称,而不是 class 个名称。所以只需给 classes 唯一的名称:
EventItem
ContextItem
然后可以使用JsonProperty
重命名属性:
public class Context
{
[JsonProperty("item")]
public ContextItem Item { get; set; }
[JsonProperty("creator")]
public string Creator { get; set; }
}
我正在使用 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; }
}
}
如果我重命名上面的项目 class 我就不能再使用 json 反序列化器。但是,由于重复的 class 名称 "Item".
,我当然会收到编译器错误我需要为此服务生成超过 30 个数据模型。在仔细观察他们的模式时,这将成为超过 90% 的模型的问题。模型本身非常大,上面的示例是我 运行 用来说明问题的简化示例。
在考虑这个问题时,我敢打赌这将是一个相当普遍的现象。这是如何处理的?
正如@mecek 指出的那样,重要的是 属性 个名称,而不是 class 个名称。所以只需给 classes 唯一的名称:
EventItem
ContextItem
然后可以使用JsonProperty
重命名属性:
public class Context
{
[JsonProperty("item")]
public ContextItem Item { get; set; }
[JsonProperty("creator")]
public string Creator { get; set; }
}