我有一个数组对象,我使用Newtonsoft JSON反序列化。
现在我需要将反序列化的对象转换为类属性。
我反序列化的对象是: -
[
[
{
"filterName": "Is Active",
"filterformattedValue": "True",
"filterValue": true,
"view": "Demo/UsersbyFunction"
},
{
"filterName": "Sbg",
"filterformattedValue": "PMT",
"filterValue": "PMT",
"view": "Demo/UsersbyFunction"
},
{
"filterName": "Sbg",
"filterformattedValue": "SPS",
"filterValue": "SPS",
"view": "Demo/UsersbyFunction"
}
],
[
{
"filterName": "Sbg",
"filterformattedValue": "CORP",
"filterValue": "CORP",
"view": "Demo/UsersbyFunction"
},
{
"filterName": "Sbg",
"filterformattedValue": "PMT",
"filterValue": "PMT",
"view": "Demo/UsersbyFunction"
},
{
"filterName": "Sbg",
"filterformattedValue": "SPS",
"filterValue": "SPS",
"view": "Demo/UsersbyFunction"
}
]
]
我的班级是: -
public class Filter
{
public string filterName { get; set; }
public string filterformattedValue { get; set; }
public string filterValue { get; set; }
public string view { get; set; }
}
现在我需要创建一个Filter类的Array对象。 有没有办法做到这一点?
提前致谢。
答案 0 :(得分:2)
编辑新的json结构: 好的,那么你有一个二维对象:
string str = @"[ [ { ""filterName"": ""Is Active"", ""filterformattedValue"": ""True"", ""filterValue"": true, ""view"": ""Demo/UsersbyFunction"" }, { ""filterName"": ""Sbg"", ""filterformattedValue"": ""PMT"", ""filterValue"": ""PMT"", ""view"": ""Demo/UsersbyFunction"" }, { ""filterName"": ""Sbg"", ""filterformattedValue"": ""SPS"", ""filterValue"": ""SPS"", ""view"": ""Demo/UsersbyFunction"" } ], [ { ""filterName"": ""Sbg"", ""filterformattedValue"": ""CORP"", ""filterValue"": ""CORP"", ""view"": ""Demo/UsersbyFunction"" }, { ""filterName"": ""Sbg"", ""filterformattedValue"": ""PMT"", ""filterValue"": ""PMT"", ""view"": ""Demo/UsersbyFunction"" }, { ""filterName"":""Sbg"", ""filterformattedValue"": ""SPS"", ""filterValue"": ""SPS"", ""view"": ""Demo/UsersbyFunction"" } ]]";
List<List<Filter>> filters = Newtonsoft.Json.JsonConvert.DeserializeObject<List<List<Filter>>>(str);
或者如果你更喜欢数组:
Filter[][] filters = Newtonsoft.Json.JsonConvert.DeserializeObject<Filter[][]>(str);
答案 1 :(得分:1)
您的JSON结构似乎有误。在https://jsonlint.com上验证相同内容删除最外面的花括号,然后尝试此
JsonConvert.DeserializeObject<IEnumerable<IEnumerable<Filter>>>(your_JSON_String)
答案 2 :(得分:0)
您可以尝试使用Cinchoo ETL - 一个用于解析/创建JSON文件的开源库。
using (var jr = new ChoJSONReader<Filter>("sample10.json")
)
{
foreach (var x in jr)
{
Console.WriteLine($"FilterName: {x.filterName}");
Console.WriteLine($"FilterformattedValue: {x.filterformattedValue}");
Console.WriteLine($"filterValue : {x.filterValue}");
Console.WriteLine($"View: {x.view}");
}
}
披露:我是这个图书馆的作者。