C#解析JSON字符串总结
2015-05-14 13:59
239 查看
JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串。
操作JSON通常有以下几种方式:
1. 原始方式:按照JSON字符串自己来解析。
2. 通用方式【★★★★★】:这种方式是使用开源的类库Newtonsoft.Json(下载地址http://json.codeplex.com/)。下载后添加dll引用就能用。
首先添加引用:using Newtonsoft.Json;
新增:本地dll下载:Newtonsoft.Json.rar 引用:using Newtonsoft.Json;
1.Json字符串普通格式解析(常用)
其他写法:
2.Json字符串嵌套格式解析
3.Json字符串数组格式解析
3. 内置方式:使用.NET Framework 3.5/4.0中提供的System.Web.Script.Serialization命名空间下的JavaScriptSerializer类进行对象的序列化与反序列化,很直接。
注意:如果使用的是VS2010,则要求当前的工程的 Target Framework要改成.Net Framework 4,不能使用Client Profile。当然这个System.Web.Extensions.dll主要是Web使用的,直接在Console工程中用感觉有点浪费资源。
此外,从最后一句也可以看到,序列化与反序列化是深拷贝的一种典型的实现方式。
操作JSON通常有以下几种方式:
1. 原始方式:按照JSON字符串自己来解析。
2. 通用方式【★★★★★】:这种方式是使用开源的类库Newtonsoft.Json(下载地址http://json.codeplex.com/)。下载后添加dll引用就能用。
首先添加引用:using Newtonsoft.Json;
新增:本地dll下载:Newtonsoft.Json.rar 引用:using Newtonsoft.Json;
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();
其他写法:
int retCode = -1;//返回码,0表示成功,其他表示失败 string returnMessage = string.Empty;//返回消息,对返回码的描述 string jsonStr = "{\"RetCode\":3,\"ReturnMessage\":\"测试消息\"}"; JavaScriptObject jsonObj = JavaScriptConvert.DeserializeObject<JavaScriptObject>(jsonStr); if (jsonObj != null) { if (jsonObj.ContainsKey("RetCode") && jsonObj["RetCode"] != null) { int.TryParse(jsonObj["RetCode"].ToString(), out retCode); } if (jsonObj.ContainsKey("ReturnMessage") && jsonObj["ReturnMessage"] != null) { returnMessage = jsonObj["ReturnMessage"].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();
3. 内置方式:使用.NET Framework 3.5/4.0中提供的System.Web.Script.Serialization命名空间下的JavaScriptSerializer类进行对象的序列化与反序列化,很直接。
Project p1 = new Project() { Input = "stone", Output = "gold" }; JavaScriptSerializer serializer = new JavaScriptSerializer(); string jsonStr = serializer.Serialize(p1); //序列化:对象=>JSON字符串 Response.Write(jsonStr); Project p2 = serializer.Deserialize<Project>(jsonStr); //反序列化:JSON字符串=>对象 Response.Write(p1.Input + "=>" + p2.Output);
注意:如果使用的是VS2010,则要求当前的工程的 Target Framework要改成.Net Framework 4,不能使用Client Profile。当然这个System.Web.Extensions.dll主要是Web使用的,直接在Console工程中用感觉有点浪费资源。
此外,从最后一句也可以看到,序列化与反序列化是深拷贝的一种典型的实现方式。
相关文章推荐
- C#解析JSON字符串总结
- C#解析JSON字符串总结
- C#解析JSON字符串总结
- C#解析JSON字符串总结
- C#解析JSON字符串总结
- C# 解析json格式字符串
- c#后台将数据转换为json字符串,前台ajax解析json字符串
- C#去掉字符串中的制表符、回车符--解决JSON解析出错的问题
- paip.C#.NET JSON解析总结
- C#后台把多个字符串结果封装成JSON格式并返回前台解析
- C#将json字符串解析成对象
- c# 解析json 字符串 报异常 Bad JSON escape sequence 解决方案
- java解析json字符串方法总结
- C#中的json格式字符串解析
- C# 解析json字符串,讲json字符串转换成类
- JSON 字符串解析技巧总结
- C# 动态调用java webservice,Winform解析Json字符串中特殊值
- c#解析json字符串处理(最清晰易懂的方法)
- C#中 后台解析json字符串
- Json解析字符串的类型总结--IOS