解析jason

2019-10-28  本文已影响0人  价值投机168

System.Web.Extensions引用。

string JsonData = "[{\"100\":\"1.0.0\"},{\"101\":\"2.2.2\"}]";
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        Dictionary<string,object> json = (Dictionary<string, object>)serializer.DeserializeObject(JsonData);//这个不能解析上面的字符串,上面的字符串是list呀
        string firstKey = json.ElementAt(0).Key;
        string secondKey = json.ElementAt(1).Key;

        object[] jsonInnerObj = (object[])serializer.DeserializeObject(JsonData);
        //强制类型转化
        Dictionary<string, object> jsonLast = (Dictionary<string, object>)jsonInnerObj[0]; 

下面是一个更完整的例子,注意:这个是数组,不只是object的例子:

string JsonData = "[{\"100\":\"1.0.0\"},{\"101\":\"2.2.2\"}]";
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        object[] jsonInnerObj = (object[])serializer.DeserializeObject(JsonData);

        Dictionary<string, string>[] Content = { new Dictionary<string, string>() };

        foreach (var j in jsonInnerObj)
        {
            Dictionary<string, object> jsonLast = (Dictionary<string, object>)j;
            for (int i = 0; i < jsonLast.Count; i++)
            {
                var item = jsonLast.ElementAt(i);//获取字典的下标为i的<key,value>值
                string itemKey = item.Key;  //获取上面得到的key值
                string itemValue =(string) item.Value;//获取上面得到的value值
                Console.WriteLine(itemKey + ":" + itemValue);

                Content[0].Add(itemKey, itemValue);
            }
        }

        string Contentjson = serializer.Serialize(Content);
        Console.WriteLine(Contentjson);

        Console.ReadKey();

上面的例子有点问题,没有完全还原,下面的例子完全还原了:

string JsonData = "[{\"100\":\"1.0.0\"},{\"101\":\"2.2.2\"}]";
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        object[] jsonInnerObj = (object[])serializer.DeserializeObject(JsonData);

        List<object> Content =  new List<object>() ;

        foreach (var j in jsonInnerObj)
        {
            Dictionary<string, object> jsonLast = (Dictionary<string, object>)j;
            for (int i = 0; i < jsonLast.Count; i++)
            {
                var item = jsonLast.ElementAt(i);//获取字典的下标为i的<key,value>值
                string itemKey = item.Key;  //获取上面得到的key值
                object itemValue =(string) item.Value;//获取上面得到的value值
                Console.WriteLine(itemKey + ":" + itemValue);

                Dictionary<string, object> b = new Dictionary<string, object>();
                b[itemKey] = itemValue;
                Content.Add(b);
            }
        }

        string Contentjson = serializer.Serialize(Content);
        Console.WriteLine(Contentjson);
上一篇 下一篇

猜你喜欢

热点阅读