【问题标题】:Json formatting with Json.net in C#在 C# 中使用 Json.net 格式化 Json
【发布时间】:2018-02-07 18:49:50
【问题描述】:

我正在尝试将一堆 XML 文件解析为一个 JSON 文件,该文件已经在工作。

最终的 JSON 文件如下所示:

{
"items": [
    {
        "subItems": [
            {
                "Name": "Name",
                "Value": "Value",
                "Type": "text"
            },
            {
                "Name": "Name",
                "Value": "Value",
                "Type": "text"
            }
        ]
    },
    {
        "subItems": [
            {
                "Name": "Name",
                "Value": "Value",
                "Type": "text"
            },
            {
                "Name": "Name",
                "Value": "Value",
                "Type": "text"
            },
...

相反,我想实现以下结构:

{
"items": [
    [   
        {
            "Name": "Name",
            "Value": "Value",
            "Type": "text"
        },
        {
            "Name": "Name",
            "Value": "Value",
            "Type": "text"
        }

    ],
    [
        {
            "Name": "Name",
            "Value": "Value",
            "Type": "text"
        },
        {
            "Name": "Name",
            "Value": "Value",
            "Type": "text"
        }
    ]
]
}

但我不知道如何定义我的对象,我目前的结构如下:

public class Items
{
    public List<Item> items;
}

public class Item
{
    public List<SubItem> subItems;
}

public class SubItem
{
    public string Name { get; set; }
    public string Value { get; set; }
    public string Type { get; set; }
}

我应该怎么做?

【问题讨论】:

    标签: c# json json.net jsonserializer json-serialization


    【解决方案1】:

    答案很简单:将您的对象转换为列表:这将删除道具名称(以及 json 中的对象表示法)。

    public class Items
    {
        public List<Item> items; //list with prop name 'items'
    }
    
    public class Item : List<SubItem> // list in list like json notation
    {
    }
    
    public class SubItem // Object in the list in list
    {
        public string Name { get; set; }
        public string Value { get; set; }
        public string Type { get; set; }
    }
    

    正如@FlilipCordas 所说,从列表中继承是不好的做法(有充分的理由) 这样你会更好:

    public class Items
    {
        public List<List<SubItem>> items; //list with list with prop name 'items'
    }
    
    public class SubItem // Object in the list in list
    {
        public string Name { get; set; }
        public string Value { get; set; }
        public string Type { get; set; }
    }
    

    【讨论】:

    • 注意从列表继承通常被认为是bad practice
    • 然后直接使用public List&lt;List&lt;SubItem&gt;&gt; items;将是最好的解决方案。
    【解决方案2】:

    复制您的 json,然后进入 Visual Studio。
    点击“编辑”>“选择性粘贴”>“将 JSON 粘贴为类”

    所有类都是自动创建的。我希望这个技巧可以帮助到你。

    【讨论】:

      猜你喜欢
      • 2013-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-12-22
      • 2015-08-30
      相关资源
      最近更新 更多