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. JMeter-性能测试之报表设定的注意事项

    在使用 Jmeter 执行性能测试时,需要屏蔽以下模块: 结果树 图形结果 断言 具体的说明,可以见官网:http://jmeter.apache.org/usermanual/component_r ...

  2. 监听UDP端口

    功能:监听服务器的UDP端口,输出端口接收的数据 #encoding:utf-8 import socket global udp global ip global port def listen_p ...

  3. Leetcode_1278. Palindrome Partitioning III_[DP]

    题目链接 You are given a string s containing lowercase letters and an integer k. You need to : First, ch ...

  4. ASP 转换HTML特殊字符

    Function HtmlDecode(ByVal s) If Has(s) Then s = regReplace(s, "<br\s*/?\s*>", vbCrLf ...

  5. log4j file 路径

    默认以System.getProperty("user.dir")为准 用LOGGER.warn(System.getProperty("user.dir")) ...

  6. 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); ...

  7. 添加对象到 HashSet 里的规则是

    下面的解释取自百度知道的一位网友的回答,链接如下: java HashSet类添加元素的问题_百度知道http://zhidao.baidu.com/link?url=9bcAnolev1EBeFI_ ...

  8. IntelliJ IDEA最新版配置Tomcat(完整版教程)

    查找该问题的童鞋我相信IntelliJ IDEA,Tomcat的下载,JDK等其他的配置都应该完成了,那我直接进入正题了. 1.新建一个项目 2.由于这里我们仅仅为了展示如何成功部署Tomcat,以及 ...

  9. Oracle_管理控制文件和日志文件

    控制文件: 控制文件在数据库创建时被自动创建,并在数据库发生物理变化时更新.控制文件被不断更新,并且在任何时候都要保证控制文件是可用的.只有Oracle进程才能安全地更新控制文件的内容,所以,任何时候 ...

  10. 涛涛的小马甲 Android之Handler机制

    首先需要了解一个基本的概念ANR:Application not response 即应用程序无响应,也就是俗话说的死机. 出现Anr的原因是: 主线程需要做很多重要的事情,响应点击事件,更新UI如果 ...