0

我想将此 JSON 反序列化为 C# 类,但我需要先定义该类:

{
"Prods": [
    {
        "ID": {
            "1001": [
                {
                    "Name": "Name1",
                    "Prod": "XXX"
                },
                {
                    "Name": "Name2",
                    "Prod": "XXXX"
                }
            ]
        }
    },
    {
        "ID": {
            "2001": [
                {
                    "Name": "Name3",
                    "Prod": "XXX-000"
                },
                {
                    "Name": "Name4",
                    "Prod": "XXXX-1111"
                }
            ]
        }
    }
]
}

我想将它反序列化成这样的东西,但不确定我的 JSON 结构是否适合它:

public class Prod
{
    int CATID;
    Dictionary<string, string> prods = new Dictionary<string, string>();
}

public class Prods
{
   public List<Prod> Products {get;set;}
}

我应该如何更改上面的 JSON 以适应它下面的类,以便我可以使用 JsonConvert 反序列化到它?

谢谢!

4

2 回答 2

1

对我来说,您的 JSON 看起来是错误的,因为您并不总是拥有“一致”的名称/值对。首先,我会像这样定义我的 JSON

{
  "Prods": 
    [{
      "ID": "1001",
      "Items": 
        [{
          "Name": "Name1",
          "Prod": "XXX"
        },
        {
          "Name": "Name2",
          "Prod": "XXXX"
        }]        
    },
    {
      "ID": "2001", 
      "Items": 
        [{
          "Name": "Name3",
          "Prod": "XXX-000"
        },
        {
          "Name": "Name4",
          "Prod": "XXXX-1111"
        }]        
    }]
}

那么我将有以下类来处理数据

public class Item {
  public string Name { get; set;}
  public string Prod { get; set;}
}

public class Product {
  public string ID { get; set;}
  public List<Item> Items { get; set; }
}

public class Products {
  public List<Product> Prods { get; set; }
}

然后我会使用json.net之类的东西来处理序列化

于 2013-11-02T00:42:03.063 回答
1

在 Visual Studio 2019 中,您可以创建一个新的类文件,删除类存根并使用 Edit->Paste Special-> Paste JSON as Classes。这会很快生成代表 JSON 所需的类。如果您不喜欢它的显示方式,您可以调整您的 JSON 字符串并重试。

如果您有一些属性没有出现在 JSON 对象的每个实例中,您可以定义JsonExtensionData以保存其他属性

    [JsonExtensionData]
    public Dictionary<string, object> additionalJSON { get; set; } =
        new Dictionary<string, object>();
于 2021-07-21T19:39:31.753 回答