C#

转自:https://blog.csdn.net/sajiazaici/article/details/77647625#

本文是全网第二简单的方法,因为我女票也发了一篇博客说是全网最简单的方法,我不能和她争。。。

PS:网络上还有各种各样的方法大家可以自行探究,不过我敢说肯定没有本文讲的清晰。。几句话就解决的事绕来绕去的说。。

(完整代码在文末,引用库文件后可直接运行~)

需求:

假设有如下json字符串:

{
"companyID": "15",

"employees": [
{
"firstName": "Bill",
"lastName": "Gates"
},
{
"firstName": "George",
"lastName": "Bush"
}
],

"manager": [
{
"salary": "6000",
"age": "23"
},
{
"salary": "8000",
"age": "26"
}
]

}
请利用C#处理这个字符串,在控制台显示出公司的ID,第一位员工的姓,和所有管理者的工资。

解决步骤:

(为了更清晰的说明,本例在控制台中测试,本人编程环境VS2015)

1、下载开源的类库Newtonsoft.Json(下载地址 http://json.codeplex.com/ )。

// 20190105更新,之前这个网站是直接一个大按钮下载dll的,好像现在变复杂了2333,也可以去里面的github-release链接里,下载最新压缩包json-xxx.zip,解压找到自己对应的.net版本的Newtonsoft.Json.dll

2、在VS中新建项目——控制台应用程序。

3、引用类库:在VS中点击:项目——引用——浏览——找到你刚才下载的Newtonsoft.Json.dll——确定。

4、在主程序Program.cs的开头添加 using Newtonsoft.Json;  这一语句。

5、把要处理的json字符串复制到 http://json2csharp.chahuo.com/  得到C#类,如图所示:

把这部分内容复制,粘贴到class Program类的下方。

6、为了方便演示,把我给的json字符串赋值给一个变量。但是json中有很多的引号,赋值给一个string变量还要加上很多的反斜杠。这里再给大家一个在线工具:http://tool.chinaz.com/tools/jsonescape.aspx

将我刚才给的东西复制进去点击“压缩并转义”,得到的值可以直接赋值给一个string变量,如图:

PS:如果能从别的地方比如webAPI得到json字符串那更好,直接赋值给一个string变量后进行下面的操作,省去了转义这一步。

string jsonText = " {\"companyID\":\"15\",\"employees\":[{\"firstName\":\"Bill\",\"lastName\":\"Gates\"},{\"firstName\":\"George\",\"lastName\":\"Bush\"}],\"manager\":[{\"salary\":\"6000\",\"age\":\"23\"},{\"salary\":\"8000\",\"age\":\"26\"}]} ";
7、反序列化json字符串得到对象。

RootObject rb = JsonConvert.DeserializeObject<RootObject>(jsonText);
8、处理对象,如输出公司ID:

Console.WriteLine(rb.companyID);

完整代码如下(引用NewtonSoft.Json.dll后可直接运行):

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ConsoleJsonTest
{
class Program
{
static void Main(string[] args)
{

string jsonText = " {\"companyID\":\"15\",\"employees\":[{\"firstName\":\"Bill\",\"lastName\":\"Gates\"},{\"firstName\":\"George\",\"lastName\":\"Bush\"}],\"manager\":[{\"salary\":\"6000\",\"age\":\"23\"},{\"salary\":\"8000\",\"age\":\"26\"}]} ";
Console.WriteLine(jsonText);

RootObject rb = JsonConvert.DeserializeObject<RootObject>(jsonText);

Console.WriteLine(rb.companyID);

Console.WriteLine(rb.employees[0].firstName);

foreach (Manager ep in rb.manager)
{
Console.WriteLine(ep.age);
}

Console.ReadKey();
}
}

public class Employees
{
public string firstName { get; set; }
public string lastName { get; set; }
}

public class Manager
{
public string salary { get; set; }
public string age { get; set; }
}

public class RootObject
{
public string companyID { get; set; }
public List<Employees> employees { get; set; }
public List<Manager> manager { get; set; }
}
}

输出结果:

说明:对于json字符串中的数组,如本例中的employees或者manager,用这篇文章里的在线工具会自动生成泛型列表List<T>。关于泛型列表的有关内容在这篇文章里就不再赘述了,大家可以直接把它当成数组使用。遍历数组的方法在此依然适用,例如代码中的:

foreach (Manager ep in rb.manager)
{
Console.WriteLine(ep.age);
}

广告:女票的全网最简单方法在这:http://blog.csdn.net/weixin_39874268/article/details/77302255

虽然我觉得她讲的不是很清楚但是我不能这么说...她依然是全网最简单的方法!嗯!

————————————————————————————————————————

20190105更新:没想到一年多前随手写的文章看得人这么多,好像还秀了网友们一脸,在此深表歉意HHH

看到有的人问如何把对象转换成json,我这边就补充一下吧,其实同样也是用这个库自带的方法,代码如下:

(直接加在Console.ReadKey()上面就可以运行了)

Employees e1 = new Employees();
e1.firstName = "Ma";
e1.lastName = "Yun";

Manager m1 = new Manager();
m1.salary = "6666";
m1.age = "30";

RootObject robj = new RootObject();
robj.employees = new List<Employees>();
robj.manager = new List<Manager>();

robj.companyID = "ALI BABA";
robj.employees.Add(e1);
robj.manager.Add(m1);

string str = JsonConvert.SerializeObject(robj);
Console.WriteLine(str);
就是调用库里面的SerializeObject方法,传入赋值好的对象就好了

最后程序输出json字符串:

{"companyID":"ALI BABA","employees":[{"firstName":"Ma","lastName":"Yun"}],"manager":[{"salary":"6666","age":"30"}]}
---------------------
作者:董董在这
来源:CSDN
原文:https://blog.csdn.net/sajiazaici/article/details/77647625
版权声明:本文为博主原创文章,转载请附上博文链接!

Java—com.alibaba.fastjson

说一下好多人都在用的一款json包。本文是操作一些json,jsonObject序列化各种异常之后写的。由于项目在使用这款json包。特意举一些demo详细记录一下。

首先这款json包是一款性能非常好的json包,至于为什么性能好,我也不知道。大家都这么说。那我也这么说吧。反正也在用。

本文只说很多方法的使用。不说各个版本的区别什么的。因为我也不知道。这个支持map,collection和javaBean.一般支持这些够了

首先看下这个的maven的仓库。

<!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>         
</dependency>

版本号选一个自己喜欢的。关于maven不再解释。tips:maven代码复制时可能pom会报错。手动敲就好了。

这个包里面最主要也是最常用的两个类是 JSON  JSONObject  这两个类也都是内部使用的是final map 来实现的。构造的时候可以传入一个ordered。来确定使用LinkedHashMap还是HashMap。看下面这个构造。还可以使用map入参来构造jsonObject。也可以看到jsonobject实际上是json的子类。有一个特征就是 jsonObject是没有static方法的。我们打点出来的静态方法都是JSON那边继承过来的。就不往深挖源码了,知道大概就好。

关于json字符串转对象和字符串转json.  JavaBean、Collection、Map、Date、Enum、都可以

parseArray(jsonStr,Class<T>)   List<T>   jsonArray跟List<T>一样

JSONObject   实现了Map<String,Object> 接口。看下面方法好多跟map瞅着一样

下面为例子json。data的value可以看成List<Persion> persion有name属性。 instance可以看成Map(对象的json字符串形式)

目前用的就这么多。关于一些不是很常用的方法没有罗列出来。感兴趣可以看源码API。
---------------------
作者:finalheart
来源:CSDN
原文:https://blog.csdn.net/finalheart/article/details/86073477
版权声明:本文为博主原创文章,转载请附上博文链接!

json字符串处理—Json&C#的更多相关文章

  1. Json字符串和Json对象的简单总结

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率). ...

  2. JavaScript操作JSON的方法总结,JSON字符串转换为JSON对象

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...

  3. 【荐】使用eval()、new Function()将JSON字符串转换为JSON对象

    在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用j ...

  4. 使用python解析Json字符串-获取Json字符串关键字

    import json data = { "statusCode": 0, "data": { ", "height": &quo ...

  5. JSON字符串与JSON对象的区别

    Q:什么是"JSON字符串",什么是"JSON对象",两者的区别? a.JSON对象是直接可以使用JQuery操作的格式,如C#中可以用对象(类名)点出属性(方 ...

  6. js 将json字符串转换为json对象的方法解析

    推荐: var obj = eval('(' + str + ')'); var last=JSON.stringify(obj); //将JSON对象转化为string字符 例如: JSON字符串: ...

  7. javaScript 将json字符串转换为json对象的方法解析

    JSON字符串: var str1 = '{ "name": "cxh", "sex": "man" }'; JSON对 ...

  8. JSON字符串与JSON对象

    JSON对象是直接可以使用JQuery操作的格式,和js中的对象一样,可以用对象(类名)点出属性(方法). JSON字符串仅仅只是一个字符串,一个整体,不截取的话没办法取出其中存储的数据,不能直接使用 ...

  9. js 中json字符串转化json对象

    JSON字符串:var str = '{ "name": "cxh", "sex": "man" }'; JSON对象: ...

  10. js 将json字符串转换为json兑现

    在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键.例如:JSON字符串:var str1 = '{ &quo ...

随机推荐

  1. 【leetcode】1093. Statistics from a Large Sample

    题目如下: We sampled integers between 0 and 255, and stored the results in an array count:  count[k] is ...

  2. drf 的分页功能

    1 settings中配置 page_size = 20 代表每页20条数据 REST_FRAMEWORK = { 'DEFAULT_PARSER_CLASSES': ( 'rest_framewor ...

  3. 饿了么CTO张雪峰:允许90后的技术人员“浮躁“一点

    编者按:今年4月,饿了么正式加入了阿里新零售战队,进一步加速其在本地生活市场的扩张速度.在创业9年的时间中,饿了么在外卖领域经历了真正的“从0到1”,尤其是在外卖平台的技术升级方面,越过了一个又一个的 ...

  4. oracle中where子句和having子句中的区别

    1.where  不能放在GROUP BY 后面2.HAVING 是跟GROUP BY 连在一起用的,放在GROUP BY 后面,此时的作用相当于WHERE3.WHERE  后面的条件中不能有聚集函数 ...

  5. NOIp 数据结构专题总结 (1):STL、堆、并查集、ST表、Hash表

    系列索引: NOIp 数据结构专题总结 (1) NOIp 数据结构专题总结 (2) STL structure STL 在 OI 中的运用:https://oi.men.ci/stl-in-oi/ s ...

  6. JS实现多Div模块拖拽功能

    空闲时间,同事让帮忙整个JS拖拽div模块功能.于是便在网上搜索,总结如下一个可实现多div模块拖拽的功能.一下是整体的HTML代码, 里边可以控制到 拖拽开始(onStart),拖拽时候(onMov ...

  7. php面试专题---18、MySQL查询优化考点

    php面试专题---18.MySQL查询优化考点 一.总结 一句话总结: 慢查询:查找分析查询速度慢的原因 数据访问:优化查询过程中的数据访问 长难句:优化长难的查询语句 特定类型:优化特定类型的查询 ...

  8. SQLite多线程下的并发操作

    标签: sqlite多线程数据库跨平台嵌入式class 2011-04-14 13:29 26939人阅读 评论(2) 收藏 举报 这两天一直在捣鼓SQLite数据库,基本的操作就不说了,比较简单,打 ...

  9. statistic_action

    方差variance 统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数.V 离差平方和(Sum of Squares of Deviations)是各项与平均项之差的平方的 ...

  10. HttpSessionBindingListener和HttpSessionAttributeListener区别

    HttpSessionBindingListener和HttpSessionAttributeListener是两个经常让初学者弄混的监听器,其实它们有很大的区别.这2个监听器在文章中简称为Bindi ...