在我的一个项目中,我想解析一个具有不同键名的JSON数组。例如
{ "details": [
{ "state": "myState1",
"place": [
{ "name": "placeName" } ] },
{ "state": "myState2",
"place": [
{ "name1": "placeName" } ] },
{ "state": "myState3",
"place": [
{ "name2": "placeName" } ] } }
所以在这个JSON中请看一下place数组。每次键都像name1,name2,name3 ......, 并且没有必要始终获得相同的JSON。在某些时候只有state1或state1和state3,并且在某个时间state1到state50。
那么如何识别和解析此数组中的确切数据
答案 0 :(得分:1)
首先,您的JSON格式不正确。在最后一个结束大括号]
之前,您会错过结束方括号}
。
然后,您无法将变量名属性解析为静态类,但您可以将它们转换为字典。以下是映射使用变量places
的类的示例:
public class Details
{
public string state { get; set; }
public List<Dictionary<string, string>> place { get; set; }
}
public class Wrap
{
public Details[] details { get; set; }
}
static void Main(string[] args)
{
string txt = File.ReadAllText("MyJSONFile.txt");
JavaScriptSerializer ser = new JavaScriptSerializer();
var data = ser.Deserialize<Wrap>(txt);
}
如果place
属性也会更改名称,我认为解析它的最简单方法是使用以下类型非常宽松的类:
public class Wrap
{
public List<Dictionary<string,object>> details { get; set; }
}
根据JSON中的值,字典中的对象将是字符串或属性字典。