json字符串处理—Json&C#
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#的更多相关文章
- Json字符串和Json对象的简单总结
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率). ...
- JavaScript操作JSON的方法总结,JSON字符串转换为JSON对象
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
- 【荐】使用eval()、new Function()将JSON字符串转换为JSON对象
在JS中将JSON的字符串解析成JSON数据格式,一般有两种方式: 1.一种为使用eval()函数. 2. 使用Function对象来进行返回解析. 第一种解析方式:使用eval函数来解析,并且使用j ...
- 使用python解析Json字符串-获取Json字符串关键字
import json data = { "statusCode": 0, "data": { ", "height": &quo ...
- JSON字符串与JSON对象的区别
Q:什么是"JSON字符串",什么是"JSON对象",两者的区别? a.JSON对象是直接可以使用JQuery操作的格式,如C#中可以用对象(类名)点出属性(方 ...
- js 将json字符串转换为json对象的方法解析
推荐: var obj = eval('(' + str + ')'); var last=JSON.stringify(obj); //将JSON对象转化为string字符 例如: JSON字符串: ...
- javaScript 将json字符串转换为json对象的方法解析
JSON字符串: var str1 = '{ "name": "cxh", "sex": "man" }'; JSON对 ...
- JSON字符串与JSON对象
JSON对象是直接可以使用JQuery操作的格式,和js中的对象一样,可以用对象(类名)点出属性(方法). JSON字符串仅仅只是一个字符串,一个整体,不截取的话没办法取出其中存储的数据,不能直接使用 ...
- js 中json字符串转化json对象
JSON字符串:var str = '{ "name": "cxh", "sex": "man" }'; JSON对象: ...
- js 将json字符串转换为json兑现
在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键.例如:JSON字符串:var str1 = '{ &quo ...
随机推荐
- JMeter-性能测试之报表设定的注意事项
在使用 Jmeter 执行性能测试时,需要屏蔽以下模块: 结果树 图形结果 断言 具体的说明,可以见官网:http://jmeter.apache.org/usermanual/component_r ...
- 监听UDP端口
功能:监听服务器的UDP端口,输出端口接收的数据 #encoding:utf-8 import socket global udp global ip global port def listen_p ...
- Leetcode_1278. Palindrome Partitioning III_[DP]
题目链接 You are given a string s containing lowercase letters and an integer k. You need to : First, ch ...
- ASP 转换HTML特殊字符
Function HtmlDecode(ByVal s) If Has(s) Then s = regReplace(s, "<br\s*/?\s*>", vbCrLf ...
- log4j file 路径
默认以System.getProperty("user.dir")为准 用LOGGER.warn(System.getProperty("user.dir")) ...
- How to not show unnecessary zeros when given integers but still have float answers when needed
NSString *str = [NSString stringWithFormat:@"%g",12.10]; NSLog(@"str = %@",str); ...
- 添加对象到 HashSet 里的规则是
下面的解释取自百度知道的一位网友的回答,链接如下: java HashSet类添加元素的问题_百度知道http://zhidao.baidu.com/link?url=9bcAnolev1EBeFI_ ...
- IntelliJ IDEA最新版配置Tomcat(完整版教程)
查找该问题的童鞋我相信IntelliJ IDEA,Tomcat的下载,JDK等其他的配置都应该完成了,那我直接进入正题了. 1.新建一个项目 2.由于这里我们仅仅为了展示如何成功部署Tomcat,以及 ...
- Oracle_管理控制文件和日志文件
控制文件: 控制文件在数据库创建时被自动创建,并在数据库发生物理变化时更新.控制文件被不断更新,并且在任何时候都要保证控制文件是可用的.只有Oracle进程才能安全地更新控制文件的内容,所以,任何时候 ...
- 涛涛的小马甲 Android之Handler机制
首先需要了解一个基本的概念ANR:Application not response 即应用程序无响应,也就是俗话说的死机. 出现Anr的原因是: 主线程需要做很多重要的事情,响应点击事件,更新UI如果 ...