我想将此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反序列化它?
谢谢!
答案 0 :(得分: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之类的东西来处理序列化
答案 1 :(得分:0)
在 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>();