首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

Json如何解析下面的数据

2014-01-19 
Json怎么解析下面的数据?{details: [{A: [[老王,60岁],[老李,72岁]],DataTime: 13895424000

Json怎么解析下面的数据?


{
    "details": [
        {
            "A": [
                [
                    "老王",
                    "60岁"
                ],
                [
                    "老李",
                    "72岁"
                ]
            ],
            "DataTime": 1389542400000,
            "B": [
                0,
                289277,
                61086
            ],
            "C": [
                26567,
                27263
            ],
            "D": false
        },
        
    ]
}

以上数据怎么解析出来老王和老李的数据?
[解决办法]

using Newtonsoft.Json;
 string jj="{"details": [{"A": [["老王","60岁"],["老李","72岁"]],"DataTime": 1389542400000,"B": [0,289277,61086],"C": [26567,27263],"D": false},]}";
  string js = GetJsonContent(jj);
  JArray jsonval = JArray.Parse(js) as JArray;
            dynamic al = jsonval;
            foreach (JObject aa in al)
            {
               string a1= aa["A"][0].ToString();
               string a2 = aa["A"][1].ToString();
               string dt = aa["DataTime"].ToString();
               string b1 = aa["B"][0].ToString();
               string b2 = aa["B"][1].ToString();
               string b3 = aa["B"][2].ToString();
               string c1 = aa["C"][0].ToString();
               string c2= aa["C"][1].ToString();
               string d = aa["D"].ToString(); 
              
            }

  private String GetJsonContent(String QueryResult)
        {
            string pattern = "{"details":(.*)}";
            var result = Regex.Match(QueryResult, pattern, RegexOptions.IgnoreCase).Groups;


            if (result.Count > 1)
            {
                return result[1].Value;
            }
            return string.Empty;
        }


[解决办法]
需要定义两个具体的类,然后如下:
private void Test()
{
    string str = @"......";
    JsonClass1 ce = FromJson<JsonClass1>(str);
}

public T FromJson<T>(string json)
{
    MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json));
    DataContractJsonSerializer j = new DataContractJsonSerializer(typeof(T));
    return (T)j.ReadObject(ms);
}

public class JsonClass1
{
    public JsonClass2[] details;
}
public class JsonClass2
{
    public string[][] A;
    public long DataTime;
    public int[] B;
    public int[] C;
    public bool D;
}

热点排行