C#解析JSON字符串总结

使用开源的类库Newtonsoft.Json(下载地址http://json.codeplex.com/)。下载后添加dll引用就能用。

1.Json字符串普通格式解析(常用)

string jsonText = "{\"zone\":\"海淀\",\"zone_en\":\"haidian\"}";
JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);
string zone = jo["zone"].ToString();
string zone_en = jo["zone_en"].ToString();

2.Json字符串嵌套格式解析

string jsonText = "{\"beijing\":{\"zone\":\"海淀\",\"zone_en\":\"haidian\"}}";
JObject jo = (JObject)JsonConvert.DeserializeObject(jsonText);
string zone = jo["beijing"]["zone"].ToString();
string zone_en = jo["beijing"]["zone_en"].ToString();

3.Json字符串数组格式解析

string jsonArrayText = "[{'a':'a1','b':'b1'},{'a':'a2','b':'b2'}]"; //"[{'a':'a1','b':'b1'}]即使只有一个元素,也需要加上[]
string jsonArrayText = "[{\"a\":\"a1\",\"b\":\"b1\"},{\"a\":\"a2\",\"b\":\"b2\"}]";  //上面写法和此写法效果一样
JArray jArray = (JArray)JsonConvert.DeserializeObject(jsonArrayText);//jsonArrayText必须是带[]数组格式字符串
string str = jArray[0]["a"].ToString();

4.json嵌套循环

 List<group_m> list = new List<group_m>();

string orderno = Web.DLL.Utility.RequestUtility.GetString("orderno");
        dr = Web.DLL.wxItem.drive_result.Getdrive_result(GlobalData.GetDBHelper(), " and orderno ='" + orderno + "'");
        string resultstr = dr.resultstr;
        if (!string.IsNullOrEmpty(resultstr))
        {
            //JObject jo = (JObject)JsonConvert.DeserializeObject(resultstr);
            //group_m errmode = JsonConvert.DeserializeObject<group_m>(resultstr);
            JArray ja = (JArray)JsonConvert.DeserializeObject(resultstr); //反序列化为数组
            for (int i = 0; i < ja.Count; i++)
            {
                group_m gm = new group_m();
                int groupid = Convert.ToInt32(ja[i]["groupid"].ToString());
                string groupname = ja[i]["groupname"].ToString();
                gm.groupid = groupid;
                gm.groupname = groupname;
                List<title_m> tmlist = new List<title_m>();
                if (ja[i]["titlelist"] != null)
                {
                    JArray ja1 = (JArray)JsonConvert.DeserializeObject(ja[i]["titlelist"].ToString());
                    for (int j = 0; j < ja1.Count; j++)
                    {
                        title_m tm = new title_m();
                        int sort = Convert.ToInt32(ja1[j]["sort"].ToString());
                        int titleid = Convert.ToInt32(ja1[j]["titleid"].ToString());
                        string title = ja1[j]["title"].ToString();
                        int result = Convert.ToInt32(ja1[j]["result"].ToString());
                        tm.sort = sort;
                        tm.titleid = titleid;
                        tm.title = title;
                        tm.result = result;
                        tmlist.Add(tm);
                    }
                    gm.titlelist = tmlist;
                }
                list.Add(gm);
            }
        }
        else
        {
            Response.Write("无数据");
            Response.End();
        }

 类:

 public class group_m
    {
        public int groupid { get; set; }
        public string groupname { get; set; }
        public List<title_m> titlelist { get; set; }
    }
    public class title_m
    {
        public int sort { get; set; }
        public int titleid { get; set; }
        public string title { get; set; }
        public int result { get; set; }
    }

下面是resultstr

[{
	"groupid": 1,
	"groupname": "驾驶准备",
	"titlelist": [{
		"sort": 1,
		"titleid": 1,
		"title": "驾驶前对天气、环境、路线提前进行了解和规划。",
		"result": 4
	}, {
		"sort": 2,
		"titleid": 2,
		"title": "上车前对车辆进行检查(轮胎、障碍物、外观和主要设备)。",
		"result": 4
	}, {
		"sort": 3,
		"titleid": 3,
		"title": "上车后调整座椅、后视镜、系好安全带,确认所有乘员安全就位。",
		"result": 4
	}]
}, {
	"groupid": 2,
	"groupname": "驾驶态度",
	"titlelist": [{
		"sort": 4,
		"titleid": 4,
		"title": "遵守道路交通安全法和相关规定,严禁使用手机。",
		"result": 4
	}, {
		"sort": 5,
		"titleid": 5,
		"title": "驾驶态度以及对他人的态度:激进攻击型、谨慎、容忍、粗暴。",
		"result": 4
	}]
}, {
	"groupid": 3,
	"groupname": "放眼远方",
	"titlelist": []
}, {
	"groupid": 4,
	"groupname": "洞悉四周",
	"titlelist": []
}, {
	"groupid": 5,
	"groupname": "视线灵活",
	"titlelist": []
}, {
	"groupid": 6,
	"groupname": "留有余地",
	"titlelist": []
}, {
	"groupid": 7,
	"groupname": "引人注意",
	"titlelist": []
}, {
	"groupid": 8,
	"groupname": "车辆操控",
	"titlelist": []
}]

注意:如果使用的是VS2010,当前的工程改成.Net Framework 4。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值