c#解析json字符串数组_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(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 获取手编列表

///

/// 获取手编列表

///

///

public static List GetHandWriteList()

{

List list = new List();

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 classPictures

{///

/// http://i.ssimg.cn/ssupload/2016/10/17/e6500633d4cb4a918c8f45e2c71ab8f6.jpg

///

public string PictureSrc { get; set; }///

///

///

public string PictureLink { get; set; }///

///中色股份 53%///

public string PictureAlt { get; set; }///

///四季度翻倍牛股在哪里?///

public string PictureTitle { get; set; }///

///meihaoxiangwang///

public string PictureTitleLink { get; set; }///

///荷塘月色直播室是由野马和荷塘月色夫妻俩共同直播的直播室,野马以短线股为主, 荷塘月色以中线股为主,擅于抓涨停板和翻倍牛股。///

public string PictureSummary { get; set; }///

///股票名称///

public string StockName { get; set; }///

///股票收益率///

public string Rate { get; set; }///

///昵称///

public string NickName { get; set; }///

///头像///

public string HeadImg { get; set; }///

///直播室名称///

public string CastRoomName { get; set; }

}

View Code

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

解析JsonArrayList

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(jsonStr); //反序列化:JSON字符串=>对象

Response.Write(p1.Input + "=>" + p2.Output);

注意:如果使用的是VS2010,则要求当前的工程的 Target Framework要改成.Net Framework 4,不能使用Client Profile。当然这个System.Web.Extensions.dll主要是Web使用的,直接在Console工程中用感觉有点浪费资源。

此外,从最后一句也可以看到,序列化与反序列化是深拷贝的一种典型的实现方式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/573125.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

/etc/fstab 文件配置项简单介绍

Untitled本文来源&#xff1a;https://wiki.archlinux.org/index.php/Fstab_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87) 查看文件系统分区表。fstab 全称为file systems table cat /dev/fstab /etc/fstab# <file system> <dir> <type> <…

为什么不敢和别人竞争_净空法师开示:学老实,在社会上不能跟人竞争吗? - 如是我闻佛教网...

净空法师开示 - 学老实&#xff0c;在社会上不能跟人竞争吗&#xff1f;下面&#xff0c;「又《十住毘婆沙论》曰&#xff1a;若人疾欲至不退转地者&#xff0c;应以恭敬心&#xff0c;执持称名号。」这几句话在这个地方提醒我们&#xff0c;假使有个人想很快速就能得到不退转…

python中a and b什么意思_Python中的a+=b和a=a+b之间的区别是什么?

我一直以为ab和aab是一样的&#xff0c;毕竟效果是一样的嘛。后来我发现并不是这么回事&#xff1f;我发现当变量是不可变对象时&#xff0c;ab和aab是一样的&#xff0c;不过我注意到了前后两个a已经不是同一个对象了。而当变量是可变对象时&#xff0c;虽然ab和aab的效果是一…

快速提高 Vi/Vim 使用效率的原则与途径

Vi/Vim 是所有 Unix/Linux 操作系统默认配备的编辑器。因其强大的功能和高效的操作&#xff0c;Vi/Vim 也成为众多 Unix/Linux 用户、管理员必须掌握并熟练使用的编辑工具之一。尤其是在没有图形界面的情况下&#xff0c;更是离不开 Vi/Vim。Vi/Vim 命令非常多、用法极为灵活&a…

5和6 objbc oracle_Oracle测试题

1) PL/SQL块中可以使用下列(BC)命令。(选择两项)a) TRUNCATEb) DELETEc) SA VEPOINTd) ALTER TABLE2) 授予sa用户在SCOTT.EMP表中SAL列的更新权限的语句是()〔选择一项〕a) GRANT CHANGE ON SCOTT.EMP TO SAb) GRANT UPDA TE ON SCOTT.EMP(SAL) TO SAc) GRANT UPDA TE (SAL) ON…

Bash 入门教程10-处理用户输入

用户输入参数是程序运行的必要条件&#xff0c;如何在Bash中调用输入的参数&#xff0c;将Bash和GCC联合调试&#xff0c;这是linux工程师必备的一个能力。 $./shawn 10 30 这是一个很典型的例子&#xff0c;后面两个就是传入bash的命令行参数。 bash shell 会将一些成为位置参…

存放在外存上的数据关机后_小鑫话题 | 惊了!关机后SSD会丢数据?

今天小鑫在群里看到一个很有趣的话题&#xff0c;是关于SSD和HDD哪个更好的讨论。这个话题小鑫都已经见过不下十次了&#xff0c;但是今天小鑫看到了一句以前从没有看到的言论。(某交流群截图)看到这里&#xff0c;小鑫觉得网络上的“标题党”&#xff0c;可能已经在大做文章了…

python:装饰器

1.情景引入。 现在已经完成了一个python项目&#xff0c;但是我们为了安全起见&#xff0c;我们需要加入验证机制。不是所有人都能调用函数 原始源代码def f1():print f1def f2():print f2def f3():print f3 由于必须遵循开发闭包的原则&#xff0c;所以我们应该尽可能的是不去…

mysql sys exec_python - 使用MySQL UDF执行命令-sys_exec不起作用 - 堆栈内存溢出

我正在尝试从MariaDB服务器运行python脚本。 我已经为此安装了mysqludf库。 我正在尝试使用sys_exec函数运行脚本&#xff0c;但是没有结果。 我已经创建了测试文件&#xff0c;它只是一个带有信息“ DONE”的.txt文件。我以root用户身份执行命令&#xff0c;因此我拥有所有特权…

2、Redis入门介绍

1、什么是Redis Redis&#xff1a;REmote DIctionary Server(远程字典服务器) 是完全开源免费的&#xff0c;用C语言编写的&#xff0c;遵守BSD协议&#xff0c;是一个高性能的(key/value)分布式内存数据库&#xff0c;基于内存运行。并支持持久化的NoSQL数据库&#xff0c;是当…

Coursera公开课-Machine_learing:编程作业7

这周的编程作业主要是两方面内容。 1.K-means聚类。 2.PCA&#xff08;Principle Component Analys&#xff09;主成分分析。 方式主要是通过对图像的聚类实现压缩图像&#xff0c;后来发现PCA也可以通过对主特征值的提取实现压缩图像的目的。很有意思&#xff0c;具体的内容参…

CF722D. Generating Sets[贪心 STL]

D. Generating Setstime limit per test2 secondsmemory limit per test256 megabytesinputstandard inputoutputstandard outputYou are given a set Y of n distinct positive integers y1, y2, ..., yn. Set X of n distinct positive integers x1, x2, ..., xn is sa…

mysql sql running no_【MySql】复制出现Slave_SQL_Running: No 错误解决

收到报警&#xff0c;mysql的从数据库在同步的过程出现问题&#xff0c;已停止同步。ERROR] Slave SQL: Error "Lock wait timeout exceeded; try restarting transaction" on query. Default database: "yang". Query: "UPDATE workitem SET statu…

使用VS2010调用matlab的mat格式文件

做实验需要将matlab实现的meanshift的结果中的region的Iabels矩阵&#xff0c;需要把labels.mat读入VS2010中&#xff0c;实现功能&#xff0c;在此把实现过程记录下来。 C读取mat文件的步骤如下。 1. vs2010的配置 新建一个工程&#xff0c;在属性管理器中选择 工程->属性-…

mysql 中间件 atlas_Mysql中间件代理 Atlas

本文接上文介绍atlas的安装配置&#xff0c;以及借助keepalive软件实现altas的ha&#xff0c;避免由于atlas故障&#xff0c;导致数据库服务中断的情况出现&#xff1a;一&#xff1a;环境介绍Atlas 主&#xff1a;192.168.1.12/24Atlas 从&#xff1a;192.168.1.81/24Atlas vi…

nodejs mysql事务处理_关于NodeJs如何使用Mysql模块实现事务处理实例

本篇文章主要介绍了NodeJs使用Mysql模块实现事务处理 &#xff0c;小编觉得挺不错的&#xff0c;现在分享给大家&#xff0c;也给大家做个参考。一起跟随小编过来看看吧依赖模块&#xff1a;1. mysqlnpm install mysql --save2. asyncnpm install async --save(ps: async模块可…

如何正确的通过 C++ Primer 学习 C++?(转自知乎)

作者&#xff1a;dawnmist链接&#xff1a;https://www.zhihu.com/question/32087709/answer/54936403来源&#xff1a;知乎著作权归作者所有&#xff0c;转载请联系作者获得授权。个人经验&#xff0c;C primer 第一次可以跳着看。关键是要尽快用起来&#xff0c;在使用中熟练…

Androidstudio连mysql_MySQL数据库之Android Studio使用JDBC远程连接mysql的注意事项(附示例)...

本文主要向大家介绍了MySQL数据库之Android Studio使用JDBC远程连接mysql的注意事项(附示例) &#xff0c;通过具体的内容向大家展现&#xff0c;希望对大家学习MySQL数据库有所帮助。JDBC为java程序访问各种类型的关系型数据库提供了统一的接口&#xff0c;用户不必针对不同数…

纪中2016.10.6比赛不明总结

100<分数<310 ———————————————————————————————————— 期望值&#xff1a; |T1&#xff1a;100/T2&#xff1a;10/T3&#xff1a;100/T4&#xff1a;100 ————————————————————————————————————…

zendstudio快捷键收录

360截屏快捷键&#xff1a;ctrlshiftxzendstudio:注释代码&#xff1a;ctrlshift/删除光标所在行&#xff1a;ctrlD复制当前行&#xff1a;ctrlalt↓上下行互换:alt↑/↓代码格式化&#xff1a;CtrlshiftF&#xff0c;缩进&#xff1a;tab代码折叠快捷键&#xff1a;Ctrl/(小键…