Json解析

JSON教程(非常详细) str = '{"title":"JSON教程","author":"C语言中文网","url":"http:\/\/c.biancheng.net\/","catalogue":["JSON是什么?String s = “[0,{“hits”:100,“author”:“C语言中文网”,“title”:“JSON教程”,“url”:“http://c.biancheng.net/”}]”;"title" => "JSON教程","title" => "JSON教程", 阅读详情

    在开发有关接口的时候,我们就需要设计接口返回的数据格式,常用的数据格式有xml、json等。那么今天我们就来看看json的使用。

一.JSON 描述。

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C、C++、C#、Java、JavaScript、Perl、Python等)。这些特性使JSON成为理想的数据交换语言。 易于人阅读和编写,同时也易于机器解析和生成(一般用于提升网络传输速率)。

二.语法规则。

   1. JSON是由‘名称/值’对组成的集合,’名称/值‘格式例如,“key1”:value1。

   2.JSON的值(value) 可以是双引号括起来的字符串(string)、数值(number)、true、false、 null、对象(object)或者数组(array)。

   3.JSON有两种结构,一种是对象,另一种是数组。

      (1).对象(object),是一个无序的“‘名称/值’对”集合。一个对象以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间使用“,”(逗号)     分  隔。 是由{}括起来的,格式例如,{"key1":value1,"key2":value2,"key3":value3,...}。

      (2).数组(array) ,是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔,是由[]括起来的。格式例如,[{"key1":value1,"key2":value2,"key3":value3},{"key1":value1,"key2":value2,"key3":value3}...]。

三.JSON解析。   

1. 新建测试项目。

    实体类,

  1. public class Person {
  2. private int id;
  3. private String name;
  4. private int age;
  5. public int getId() {
  6. return id;
  7. }
  8. public void setId(int id) {
  9. this.id = id;
  10. }
  11. public String getName() {
  12. return name;
  13. }
  14. public void setName(String name) {
  15. this.name = name;
  16. }
  17. public int getAge() {
  18. return age;
  19. }
  20. public void setAge(int age) {
  21. this.age = age;
  22. }
  23. @Override
  24. public String toString() {
  25. return "Person [id=" + id + ", name=" + name + ", age=" + age + "]";
  26. }
  27. }

   使用GSON和JackJson分别解析。

  2. GSON。GSON是Google开发的Java API,用于转换Java对象和Json对象。

  2.1.  首先下载导入GSON的jar。

      (1).可以去github的链接,下载GSON的源码,自己编译,生成jar;

      (2).也可以直接下载jar包,GSONjar包下载链接。

      (3).gson-2.6.6.jar 下载链接。

   2.2.生成对象。

  1. public static void main(String[] args) {
  2. Gson gson= new Gson();
  3. Person person= new Person();
  4. person.setId( 1);
  5. person.setName( "zhangsan");
  6. person.setAge( 30);
  7. String str=gson.toJson(person);
  8. System.out.println(str);
  9. }
   2.3.输出结果。

{"id":1,"name":"zhangsan","age":30}

  2.4.生成数组。

  1. public static void main(String[] args) {
  2. List<Person> list= new ArrayList<Person>();
  3.         Gson gson= new Gson();
  4.         Person person= new Person();
  5.         person.setId( 1);
  6.         person.setName( "zhangsan");
  7.         person.setAge( 30);
  8.         list.add(person);
  9.         Person person1= new Person();
  10.         person1.setId( 2);
  11.         person1.setName( "lisi");
  12.         person1.setAge( 20);
  13.         list.add(person1);
  14.         String str=gson.toJson(list);
  15.         System.out.println(str);
  16. }
  2.5.输出结果。
[{"id":1,"name":"zhangsan","age":30},{"id":2,"name":"lisi","age":20}]

  2.6.json解析对象。

  1. public static void main(String[] args) {
  2. String str= "{\"id\":1,\"name\":\"zhangsan\",\"age\":30}";
  3. Gson gson= new Gson();
  4. Person person=gson.fromJson(str, Person.class);
  5. System.out.println(person.toString());
  6. }
  2.7.输出结果。
Person [id=1, name=zhangsan, age=30]
  2.8.json解析数组。

  1. public static void main(String[] args) {
  2. String str = "[{\"id\":1,\"name\":\"zhangsan\",\"age\":30},{\"id\":2,\"name\":\"lisi\",\"age\":20}]";
  3. Gson gson = new Gson();
  4. Type type = new TypeToken<List<Person>>() {
  5. }.getType();
  6. List<Person> list = gson.fromJson(str, type);
  7. for (Person person : list) {
  8. System.out.println(person.toString());
  9. }
  10. }
  2.9.输出结果。
  1. Person [id= 1, name=zhangsan, age= 30]
  2. Person [id= 2, name=lisi, age= 20]

  3.JackJson。

   Jackson框架是基于Java平台的一套数据处理工具,被称为“最好的Java Json解析器”。 
   Jackson框架包含了3个核心库:streaming,databind,annotations。

 3.1 库下载地址。

  Jackson https://github.com/FasterXML/jackson-core/wiki

   Databind https://github.com/FasterXML/jackson-databind

   Annotations https://github.com/FasterXML/jackson-annotations/wiki

  Jackson doc https://github.com/FasterXML/jackson-docs

  3.2.生成对象。

  1. Person person= new Person();
  2. person.setId( 1);
  3. person.setName( "zhangsan");
  4. person.setAge( 30);
  5. ObjectMapper objectMapper = new ObjectMapper();
  6. try {
  7. String json=objectMapper.writeValueAsString(person);
  8. System.out.println(json);
  9. } catch (JsonProcessingException e) {
  10. // TODO Auto-generated catch block
  11. e.printStackTrace();
  12. }
   3.3. 结果。

{"id":1,"name":"zhangsan","age":30}
   3.4.  生成数组。

  1. List<Person> list= new ArrayList<Person>();
  2. Person person= new Person();
  3. person.setId( 1);
  4. person.setName( "zhangsan");
  5. person.setAge( 30);
  6. list.add(person);
  7. Person person1= new Person();
  8. person1.setId( 2);
  9. person1.setName( "lisi");
  10. person1.setAge( 20);
  11. list.add(person1);
  12. Person person2= new Person();
  13. person2.setId( 3);
  14. person2.setName( "wangwu");
  15. person2.setAge( 30);
  16. list.add(person1);
  17. ObjectMapper objectMapper = new ObjectMapper();
  18. try {
  19. String json=objectMapper.writeValueAsString(list);
  20. System.out.println(json);
  21. } catch (JsonProcessingException e) {
  22. // TODO Auto-generated catch block
  23. e.printStackTrace();
  24. }

   3.5.结果。

[{"id":1,"name":"zhangsan","age":30},{"id":2,"name":"lisi","age":20},{"id":2,"name":"lisi","age":20}]

   3.6.json解析对象。

  1. Person person= new Person();
  2. person.setId( 1);
  3. person.setName( "zhangsan");
  4. person.setAge( 30);
  5. ObjectMapper objectMapper = new ObjectMapper();
  6. try {
  7. String json=objectMapper.writeValueAsString(person);
  8. System.out.println(json);
  9. Person info=objectMapper.readValue(json, Person.class);
  10. System.out.println(info.toString());
  11. } catch (JsonProcessingException e) {
  12. // TODO Auto-generated catch block
  13. e.printStackTrace();
  14. } catch (IOException e) {
  15. // TODO Auto-generated catch block
  16. e.printStackTrace();
  17. }
  18. }

   3.7结果。

  1. { "id": 1, "name": "zhangsan", "age": 30}
  2. Person [id= 1, name=zhangsan, age= 30]

   3.8.json解析数组。

  1. List<Person> list= new ArrayList<Person>();
  2. Person person= new Person();
  3. person.setId( 1);
  4. person.setName( "zhangsan");
  5. person.setAge( 30);
  6. list.add(person);
  7. Person person1= new Person();
  8. person1.setId( 2);
  9. person1.setName( "lisi");
  10. person1.setAge( 20);
  11. list.add(person1);
  12. Person person2= new Person();
  13. person2.setId( 3);
  14. person2.setName( "wangwu");
  15. person2.setAge( 30);
  16. list.add(person1);
  17. ObjectMapper objectMapper = new ObjectMapper();
  18. try {
  19. String json=objectMapper.writeValueAsString(list);
  20. System.out.println(json);
  21. Person[] persons=objectMapper.readValue(json, Person[].class);
  22. for (Person info:persons) {
  23. System.out.println(info.toString());
  24. }
  25. } catch (JsonProcessingException e) {
  26. // TODO Auto-generated catch block
  27. e.printStackTrace();
  28. } catch (IOException e) {
  29. // TODO Auto-generated catch block
  30. e.printStackTrace();
  31. }
   3.9结果。

  1. [{ "id": 1, "name": "zhangsan", "age": 30},{ "id": 2, "name": "lisi", "age": 20},{ "id": 2, "name": "lisi", "age": 20}]
  2. Person [id= 1, name=zhangsan, age= 30]
  3. Person [id= 2, name=lisi, age= 20]
  4. Person [id= 2, name=lisi, age= 20]

四.总结。

    如果你在开发的时候没有使用第三库去解析JSON,那么解析过程是很繁琐的。使用第三方库后,解析就很方便快捷。(建议大家在解析JSON数据时,先尽量不要使用第三方库,而使用SDK提供的API去解析数据,这样你对JSON数据以及SDK都会了解的更深刻)

PS:比起XML,JSON的主要优势在于它的体积更小,在网络上传输的时候可以更省流量,但缺点在于,它的语义较差,看起来不如XML直观。

鸿蒙next json解析 ArkUI 带你玩转 arkts json解析 相信很多同学再开发过程中都会遇到json解析的处理,不管是跟服务端交互 或者是读取本地的json 都会遇到json解析 那么正好今天有空正好讲一下鸿蒙next里面的json解析arkts 里面的提供丰富的api来解析我们的json ,对比其他端来说也是相对比较简单 对于复杂的json 我们可以定义一个 interface 或者一个class 来配合我们的,JSON.parse 来进行解析复杂的json数据 当然这个生成数据模型model 我们团队有开发一个插件,这样也大大方便我们开发。 阅读详情

相关推荐

Android JSON 解析

在 Android 中,JSON(JavaScript Object Notation)是一种常用的数据交换格式,用于客户端与服务器之间的数据传输。Android 提供了多种方式来处理 JSON 数据,本文章介绍了 Android JSON 解析以及 Gson 的使用,和其他第三方库的说明。

天逸的博客 2519

JSON教程(非常详细)(1)

使用 Ajax 异步加载的数据;RPC 远程调用;前后端分离,后端返回的数据;开发 API,例如百度、高德的一些开放接口。这些接口一般都会提供一个接口文档,说明接口调用的方法、需要的参数以及返回数据的介绍等。JSON 是一种轻量级的数据交换格式,它是基于 JavaScript 的一个子集,采用完全独立于编程语言的格式来表示数据,可以跨语言、跨平台使用。简洁清晰的层次结构使得 JSON 逐渐替代了 XML,成为了最理想的数据交换格式,广泛应用于 Web 开发领域。

2401_87300302的博客 3377

张量积曲面:数学原理与Python实现

Suv∑i0m∑j0nPij⋅Bipu⋅BjqvSuvi0∑m​j0∑n​Pij​⋅Bip​u⋅Bjq​v其中PijP_{i,j}Pij​是控制点网格,BipuB_i^p(u)Bip​u和BjqvB_j^q(v)Bjq​v是基函数,分别沿uuu和vvv方向定义。

T20151470的博客 1159

前后端角度看接口(什么是json)?

什么是JSON?

Bean冷的心的博客 6万+

FPGA—DHT11数字温湿度传感器

1. DH1T11温湿度传感器与DS18B20温湿度传感器非常类似,都是严格按照时序要求写代码。建议可以比较学习。2. 显示温度与湿度部分的数据处理,采用 X10 进行在数码管上的移一位显示,配合了数码管小数部分的显示特点又区分了温度与湿度。3. 程序是按照一个接一个状态及顺序跳转的,建议使用状态机。说明:本人使用的是野火家Xilinx Spartan6系列开发板及配套教程,以上内容如有疑惑或错误欢迎评论区指出,或者移步B站观看野火家视频教程。

m0_72885897的博客 4780

VASP计算层错能(SFE)全攻略2

本文介绍了使用VASP计算纯镍(Ni)层错能(SFE)的具体步骤。首先构建Ni的FCC单胞并扩展为超胞,通过修改原子位置引入堆垛层错;随后分别计算完美晶体和含层错结构的能量;最后通过能量差与层错面积之比求得SFE值。计算需注意k点网格、截断能和超胞尺寸的收敛性测试,并推荐使用PAW赝势和ASE等工具辅助结构构建。

weixin_50519490的博客 1991

JSON的使用

1.1、什么是 JSON JSON (JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。 它基于 JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999 的一个子集。 JSON 采用完全独立于语言的文本格式,但是也使用了类似于 C 语言家族的习惯(包括 C, C++, C#, Java,JavaScript, Perl, Pyt

weixin_51797050的博客 2617

Nvidia AGX Xavier刷机指北

因为工作的关系,要在AGX上安装CUDA。nvidia官网上没找到适合AGX版本的CUDA,只能走刷机的路子。刷机过程中,也遇到一些坑,做个记录。 需要有一台ubuntu系统的电脑作为主机Host。我的主机系统为Ubuntu18.04 整个刷机过程为: 在Host上安装sdkmanager,整个刷机过程主要通过sdkmanager来操作。 在Host自动下载一些系统组件,各种deb包 Host上制作OS系统镜像,烧录到AGX中 Host上之前下载好的deb包,安装到AGX中。 完结,撒花 ...

sinat_38685124的博客 6296

JSON-初识+解析

1. JSON 1.1 什么是JSON JSON(JavaScript Object Notation, JS 对象标记):是一种轻量级的数据交换格式。JSON使用JavaScript 语法来描述数据对象,采用完全独立于语言的文本格式,易于存储和交换。 JSON 的网络媒体类型是 application/json。 1.2 JSON使用范围 JSON基于JavaScript编写数据对象,因此,任何JavaScript支持的类型都可以通过JSON来表示。 JSON可以用于通过网络连接序列化和阐述结构化数据

weixin_47243236的博客 1544

信号削峰CFR基础知识介绍(一)

接下来,将得到的峰值分成若干段,在每一段中,仅保留该段内所有峰值中幅度最大的峰值。为了减少不必要的带外泄露,削峰后的信号将通过一个低通滤波器,以减少对应于削峰后信号中尖锐拐角的高频信号。首先,它识别出高于由目标PAPR确定的阈值的峰值。在峰值加窗算法中,削峰是通过在峰值区域将原始信号与一个加窗函数相乘来实现的,如下图所示。其中,w(n) 是一种常见的加窗函数,如凯撒窗、高斯窗和汉明窗等,而 p(n) 是一个加权系数。如上图所示,削峰会导致削峰后的信号出现尖锐的拐角,从而引发不必要的带外辐射(ACP增加)。

weixin_49761275的博客 1552

通信原理 | 窗函数 | 矩形窗 | 汉宁窗 | 汉明窗 | 布莱克曼窗 | 补零对频谱的影响

比如,原信号是一个周期的余弦信号,又给它补了9个周期长度的0,那么信号并不是10个周期的余弦信号,而是一个周期的余弦加一串0,补零并没有带来新的信息!频谱分辨率的含义是两个频率不同的信号在频率上可分,也就要求他们不能落到一个频域函数的主瓣上,所以,如果待分析的两个信号频率接近,而时域长度又短,那么在频域上他们就落在一个频域函数的主瓣内了,补再多的零也无济于事。而形状(主瓣宽度)是由补零之前的信号长度决定的,补零的作用只是细化了频域序列,并没有改变其主瓣宽度。所以,汉宁窗牺牲了分辨率,换来了旁瓣泄露的减小。

若北辰 1305

JSON的三种解析方式

JSON的三种解析方式 一、什么是JSON? JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。 JSON就是一串字符串 只不过元素会使用特定的符号标注。 {} 双括号表示对象 [] 中括号表示数组 "" 双引号内是属性或值 : 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象...

匆匆那年的专栏 5万+

遥感影像道路提取算法——SGCN

用于从高分辨率遥感图像(TGRS)中提取复杂环境中道路的分割深度可分离图卷积网络摘要:高分辨率遥感图像的道路信息在各个领域得到广泛应用,基于深度学习的方法有效地显示了较高的道路提取性能。然而,在高分辨率遥感图像中,检测柏油路封闭或树木覆盖的道路,仍存在一些挑战,限制了提取的准确性:1)道路之间的阶级内差异较大,城市物体,特别是道路和建筑物之间的阶级间差异不明显;2)被树木、阴影和建筑物遮挡的道路难以提取;3)道路缺乏高精度遥感数据集。

littleyy666的博客 3846

Qt构建JSON及解析JSON

一般来讲C++类和对象在java中是无法直接直接使用的,因为压根就不是一个规则。但是他们在内存中都是二进制表示的,所以把C++的类和对象转成二进制再按照java的规则解析这段二进制代码就可以做到C++描述的东西在java中复现了。

a1937194471的博客 5426

实战神器指标解析 篇四:主力吸筹指标及其分析和使用说明

主力可能会进行多次吸筹,因此需要根据黄色趋势线来判断是否有转强的变化。一旦出现转强的迹象,这通常意味着吸筹已经接近尾声,即将进入拉升前期。此时可以介入进行建仓。该股票指标通过分析价格变动的方式,能够精确跟踪并标识主力的吸筹行为。当底部出现多根洋红色柱子时,这通常表示出现了主力吸筹的指示。这段代码主要用于分析股票的底部吸筹情况、趋势和涨跌情况。

生活在别处 6231

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

C#解析JSON

全称“JavaScript Object Notation(JavaScript对象表示法)”,JSON 是存储和交换文本信息的语法。[ {"id" : 2 , "name" : "星河爆破" , "number" : 999 } , {"id" : 3 , "name" : "九星连珠" , "number" : 9 } , {"id" : 4 , "name" : "一语成谶" , "number" : 999 } ]学习JSON基础教程在线JSON解析及格式化验证网站。

weixin_43046974的博客 1万+

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

JSON解析详解

JSON解析详解 1.定义一串测试JSON { "retCode":0, "retMSg":"成功", "data":[ { "name":"李雷", "id":"001", "score":{ "Chinese":"80", "Math":"95" }, "schoolInfo": [ { "School_name": "清华"

Clozzz的博客 2万+

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JavaScript解析JSON对象及JSON字符串

JavaScript解析JSON对象是常用功能之一。此处我们要明确JSON对象和JSON字符串的区别?否则会给我们的解析带来困扰。主要实现如下功能:1、JavaScript解析JSON字符串和JSON对象?2、JavaScript解析JSON数组?3、JavaScript解析来自springboot通过@ResponseBody返回的JSON字符串?4、禁用eval后如何替代eval?JSON对象的本质是一个对象,对象中属性的值可以通过object.name的方式访问。

雾林小妖的博客 1678

JSON解析

JSON是一种轻量级的数据交换格式,它采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言,易于人的阅读和编写,同时也有利于机器解析和生成,并有效地提升网络传输效率。JSON的具体使用方法。

m0_68041576的博客 1万+

Qt解析JSON

Qt解析JSON的类QJsonDocument、QJsonObject、QJsonArray

qq_44723937的博客 3947

Java、JS解析JSON对象、JSON数组

一:利用alibaba.fastjson解析JSONObject、JSONArray package com.test1; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; public class TestJsonArray { public static void main(String[] args) { // json

jike11231的博客 8659

【JSON文件解析】JSON文件

JSON文件是什么? Qt如何解析JSON文件?

wddkxg的博客 3203
上一篇: lucene中的高亮
下一篇: Eclipse 快捷键大全
Java_funds
博客等级 码龄9年 6粉丝 22原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值