C#解析JSON字符串总结

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字符串普通格式解析(常用)

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();}}

解析Josn列表数据:

public static JArray GetData2JArray(string url, string key)
{string jsonData = HttpHelper.HttpGet(url, "", "gb2312"); JObject obj = JObject.Parse(jsonData);return (JArray)obj[key];
}

以上Json的返回的数据:

{"Pictures":
[
{"PictureSrc":"http://i.ssimg.cn/ssupload/2016/10/17/707f464645f44b4cb9882b75d23ed8f9.png","PictureLink":"","PictureAlt":"通光线缆 36.50%","PictureTitle":"实盘赛冠军直播室","PictureTitleLink":"132","PictureSummary":"荷塘月色直播室是由野马和荷塘月色夫妻俩共同直播的直播室,野马以短线股为主,荷塘月色以中线股为主,擅于抓涨停板和翻倍牛股。","OrderTime":"2016-10-17 13:16:04"},
{"PictureSrc":"http://i.ssimg.cn/ssupload/2016/10/17/4c38b0a2604e49beaf1e4f7885e6a1a4.png","PictureLink":"","PictureAlt":"天际股份 6.38%","PictureTitle":"证券之星最强王牌播主","PictureTitleLink":"1716","PictureSummary":"深入股海数年,拥有十余年的实战经验。2014年证券之星播主年度冠军,各大一线网站著名博客,多次接受电视台专访。","OrderTime":"2016-10-17 13:12:34"}
]
}

解析成自定义实体类列表:

#region 获取手编列表
/// <summary>
/// 获取手编列表
/// </summary>
/// <returns></returns>
public static List<Pictures> GetHandWriteList()
{List<Pictures> list = new List<Pictures>();var data = Common.LiveCastUserManageAPI.GetData2JArray(CmsApiSite, "Pictures");if (data != null && data.Count > 0){foreach (var item in data){Pictures p = new Pictures();if (!string.IsNullOrEmpty(item["PictureSrc"].ToString())){p.PictureSrc = item["PictureSrc"].ToString();}list.Add(p);}}return list;
}
#endregion

Pictures实体类的定义:

    public class Pictures{/// <summary>/// http://i.ssimg.cn/ssupload/2016/10/17/e6500633d4cb4a918c8f45e2c71ab8f6.jpg/// </summary>public string PictureSrc { get; set; }/// <summary>/// /// </summary>public string PictureLink { get; set; }/// <summary>/// 中色股份 53%/// </summary>public string PictureAlt { get; set; }/// <summary>/// 四季度翻倍牛股在哪里?/// </summary>public string PictureTitle { get; set; }/// <summary>/// meihaoxiangwang/// </summary>public string PictureTitleLink { get; set; }/// <summary>/// 荷塘月色直播室是由野马和荷塘月色夫妻俩共同直播的直播室,野马以短线股为主, 荷塘月色以中线股为主,擅于抓涨停板和翻倍牛股。/// </summary>public string PictureSummary { get; set; }/// <summary>/// 股票名称/// </summary>public string StockName { get; set; }/// <summary>/// 股票收益率/// </summary>public string Rate { get; set; }/// <summary>/// 昵称/// </summary>public string NickName { get; set; }/// <summary>/// 头像/// </summary>public string HeadImg { get; set; }/// <summary>/// 直播室名称/// </summary>public string CastRoomName { get; set; }}

JSON生成实体类工具:点击>>

参考:序列化Json-Newtonsoft.Json

解析JsonArrayList

转换json格式为C#类

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工程中用感觉有点浪费资源。
  此外,从最后一句也可以看到,序列化与反序列化是深拷贝的一种典型的实现方式

备注:

json格式字符串转换为实体类,大括号{}表示对象,[]数组表示列表。

转载于:https://www.cnblogs.com/zoujinhua/p/10884634.html

C#解析JSON字符串总结相关推荐

  1. c#解析json字符串处理清晰易懂的方法

    JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2. 通用方式[★★★★★]: ...

  2. qt中解析json字符串的时候出现错误missingNameSeperator

    概述 当解析json字符串,编译代码的时候没有问题,但是当程序调式运行到解析json字符串的时候,即这句: QJsonParseError parseError;QJsonDocument doc = ...

  3. c#解析json字符串数组_C#解析JSON字符串总结

    JSON文件读取到内存中就是字符串,.NET操作JSON就是生成与解析JSON字符串. 操作JSON通常有以下几种方式: 1. 原始方式:按照JSON字符串自己来解析. 2. 通用方式[★★★★★]: ...

  4. MySQL解析json字符串的相关问题

    很多时候,我们需要在sql里面直接解析json字符串.这里针对mysql5.7版本的分水岭进行区分. 查看MySQL版本: SELECT VERSION(); 对于mysql5.7以上版本 使用mys ...

  5. C++ 取json中的某一个值,解析json字符串

    C++ 取json中的某一个值,解析json字符串 C++编程中遇到了需要经常从json中取某一项,又不想用json库文件实现,只能靠自己封装方法 例如这个json {"date" ...

  6. T-SQL解析json字符串函数

    T-SQL解析json字符串函数及其使用示例 参考博文:http://www.cnblogs.com/huangtailang/p/4277809.html 1.解析json字符串函数,返回表变量 A ...

  7. c# 解析json 字符串 报异常 Bad JSON escape sequence 解决方案

    c# 解析json 字符串 报异常 Bad JSON escape sequence 解决方案 参考文章: (1)c# 解析json 字符串 报异常 Bad JSON escape sequence ...

  8. sql解析json格式字段、sql关联json格式字段,mysql解析json、sql解析json字符串

    sql解析json格式字段.sql关联json格式字段,mysql解析json.sql解析json字符串 sql解析字符串 sql关联json中的某个字段 sql解析字符串 表名user_login ...

  9. Java解析json字符串和json数组

    Java解析json字符串和json数组 public static Map<String, String> getUploadTransactions(String json){Map& ...

最新文章

  1. 一位人工智能总监对AI行业的【实话实说】
  2. JWT简介json web token bear token
  3. node-mongo-服务器封装
  4. 计算机指令格式_计算机科学组织| 指令格式
  5. JAVA进阶教学之(8种包装类)
  6. Silverlight Gantt甘特图项目管理解决方案
  7. IPC--进程间通信三(共享内存)
  8. 知云文献阅读器_知云文献翻译
  9. [设想]增加比较的多元运算符
  10. win10计算机管理 分区,win10系统自带磁盘管理工具调整硬盘分区大小的详细方案...
  11. STM32F401 / STM32F411 WeAct Studio 资料以及翻版说明
  12. 5G无线系统设计与国际标准 pdf和Word
  13. 当前的安全设置不允许从该位置下载文件
  14. openwrt网络设置
  15. 非常好听但比较难找的歌曲
  16. git aliases
  17. java代码实现短信接受验证码
  18. 从键盘输入圆柱体的半径和高,求圆柱体的表面积和体积
  19. 两年工作经验java面试题精炼汇总
  20. java写三次函数导数,用导数研究三次函数

热门文章

  1. [React Native] 解析JSON文件
  2. Docker 初级教程
  3. 编程之美 set 17 拈游戏分析 (2)
  4. 在虚拟机中安装Windows Server 2008企业版
  5. 分享转帖 -- 考勤的背后 (加注个人点评哦)
  6. 项目中除了需求外还需要知道的问题
  7. extra energy theory
  8. girton college map
  9. find a group of people who want to do similar things with you
  10. 亲测有用的音乐推荐网站