0

在我的一个项目中,我想解析一个具有不同键名的 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 到状态 50。

那么我如何识别和解析这个数组中的确切数据

4

1 回答 1

1

首先,您的 JSON 格式不正确。您在最后一个右大括号之前错过了一个]右方括号}

然后,您不能将变量名属性解析为静态类,但可以将它们转换为字典。下面是一个使用 variable 的映射类示例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 中的值,字典中的对象将是字符串或属性字典。

于 2012-05-18T15:51:21.813 回答