处理重复的数据模型名称

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; }
}