我有这种格式的JSON:
{
"user": "123@abc",
"filter": [
{
"filterName": "Filter1",
"condition": "1",
"values": [
"123"
]
},
{
"filterName": "Filter2",
"condition": "2",
"values": [
"ABC",
"XYZ"
]
}
],
"onlyMerge": "true",
"mergeBy": [
]
}
我正在使用这些类
public class Outermost{
public string user;
public Root filter ;
public string onlyMerge;
public string mergeby;
}
public class values {
public string value { get; set; }
}
public class Filters {
public string filtername {get; set; }
public string condition {get; set;}
public values values { get; set; }
}
public class Root {
public List<Filters> Filters { get; set; }
}
JSONConvert.Deserialize(Outermost)我必须反序列化结构
粘贴到 http://json2csharp.com/中,您将看到 C# 类与 JSON 不匹配。
更新 2:
Visual Studio 2013有一个内置的Json到C#类转换器工具! :)
更新:
只是关于伟大工具的注意事项 http://json2csharp.com/:当使用具有复杂类型属性的对象时,您可能需要检查它创建的类,因为有时它会创建不必要/不需要的类。例:
杰森
var objJson = {
"id_product": 19,
"description": "Laptop",
"_links": {
"buy": {
"href": "/Product/Buy/19",
"title": "Buy It Now!"
},
"more_details": {
"href": "/Product/Details/19",
"title": "More Details..."
}
}
};
生成的类/类:
public class Buy
{
public string href { get; set; }
public string title { get; set; }
}
public class MoreDetails
{
public string href { get; set; }
public string title { get; set; }
}
public class Links
{
public Buy buy { get; set; }
public MoreDetails more_details { get; set; }
}
public class RootObject
{
public int id_product { get; set; }
public string description { get; set; }
public Links _links { get; set; }
}
如您所见,Buy
和MoreDetails
这两个类具有完全相同的结构和用途,因此您可能希望将其替换为更通用的类,而不是重复使用类(在某些情况下,这种冗余结构更合适)。在一个非常相似的场景中,我创建了一个名为 Link
的类。
原答案:
你说得不够多,无法确定你的问题是什么。尝试在将来更好地说明您的困难和需求。
但是,我想您的问题是抛出一些异常或某些属性未绑定......
请注意,在 JSON 示例对象中,filter 直接是一个集合,而不是一个内部有集合的属性。因此,只需更改
public Root filter;
public List<Filters> filter { get; set; }
.此外,mergeBy
和 values
是集合,而不是简单的字符串。您可以使用 http://json2csharp.com/自动生成 JSON 对象的相应 C# 类,并检查哪些属性不匹配...(或者,替换你的整个班级,这就是我推荐的......