json的三种解析方式

阅读: 评论:0

json的三种解析方式

json的三种解析方式

一、什么是JSON

JSON是一种取代XML的数据结构,和xml相比,它更小巧但描述能力却不差,由于它的小巧所以网络传输数据将减少更多流量从而加快速度。

那么,JSON到底是什么?

JSON就是一串字符串 只不过元素会使用特定的符号标注。

{} 双括号表示对象

[] 中括号表示数组

"" 双引号内是属性或值

: 冒号表示后者是前者的值(这个值可以是字符串、数字、也可以是另一个数组或对象)

所以 {"name": "Michael"} 可以理解为是一个包含name为Michael的对象

而[{"name": "Michael"},{"name": "Jerry"}]就表示包含两个对象的数组

当然了,你也可以使用{"name":["Michael","Jerry"]}来简化上面一部,这是一个拥有一个name数组的对象

PS:现在还有很多人存在一些误区,为什么{name:'json'}在检验时通过不了, 那是因为JSON官网最新规范规定,如果是字符串,那不管是键或值最好都用双引号引起来,所以上面的代码就是{"name":"json"}

二、JSON解析之谷歌Gson解析

(一)生成JSON

1.定义一个Book类

package com.java.demo;import java.util.Objects;public class Book {private String id;private String name;private String info;@Overridepublic String toString() {return "Book{" +"id='" + id + ''' +", name='" + name + ''' +", info='" + info + ''' +'}';}public Book(String id, String name, String info) {this.id = id;this.name = name;this.info = info;}public Book() {}@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Book book = (Book) o;return Objects.equals(id, book.id) && Objects.equals(name, book.name) && Objects.equals(info, book.info);}@Overridepublic int hashCode() {return Objects.hash(id, name, info);}public String getId() {return id;}public void setId(String id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getInfo() {return info;}public void setInfo(String info) {this.info = info;}
}

 使用Gson解析 json

package com.java.demo;le.gson.Gson;/*** 通过谷歌Gson解析 json*/
public class Demo1 {public static void main(String[] args) {/*//1.创建Gson对象Gson g = new Gson();//2.创建book对象,并且进行设置值Book b = new Book("100","李白","窗前明月光");//3.使用Gson对象进行转换String s = g.toJson(b);System.out.println(s);*/
//        简写方式//创建book对象,并且进行设置值Book b = new Book("100","李白","窗前明月光");//创建Gson对象并且进行传值转换String s = new Gson().toJson(b);System.out.println(s);}}

运行结果

{"id":"100","name":"李白","info":"窗前明月光"}

(二)解析

一个嵌套Map的List数组解析

package com.java.demo;le.gson.Gson;import java.util.HashMap;
import java.util.List;public class Demo2 {public static void main(String[] args) {//1.    创建Gson对象Gson g = new Gson();HashMap data = g.fromJson("{"id":"100","name":"李白","info":"窗前明月光","page":["锄禾日当午","汗滴禾下土","嘿嘿嘿嘿嘿"]}", HashMap.class);List page = (List) ("page");System.out.(1));}}

 运行结果:取出page数组下标为1;

汗滴禾下土

2、使用阿里巴巴fastjson 解析

     使用fastjson 将数组转换为字符串

package com.java.demo;import com.alibaba.fastjson.JSON;public class Demo3 {public static void main(String[] args) {// 定义数组Book book = new Book("1002","杜甫","两个黄鹂鸣翠柳,一行白鹭上青天。窗含西岭千秋雪,门泊东吴万里船。");//1.    转换String json = JSONString(book);System.out.println(json);}
}

结果

{"id":"1002","info":"两个黄鹂鸣翠柳,一行白鹭上青天。窗含西岭千秋雪,门泊东吴万里船。","name":"杜甫"}

使用fastjson 解析

package com.java.demo;import com.alibaba.fastjson.JSON;public class Demo4 {public static void main(String[] args) {//1.    转换  : {"id":"1002","info":"两个黄鹂鸣翠柳,一行白鹭上青天。窗含西岭千秋雪,门泊东吴万里船。","name":"杜甫"}Book book = JSON.parseObject("{"id":"1002","info":"两个黄鹂鸣翠柳,一行白鹭上青天。窗含西岭千秋雪,门泊东吴万里船。","name":"杜甫"}", Book.class);System.out.Id());System.out.Name());}
}

结果

1002
杜甫

list 集合进行解析

package com.java.demo;import com.alibaba.fastjson.JSON;import java.util.List;public class Demo5 {public static void main(String[] args) {//1.    转换  : ["一二三","二三四","三四五"]List<String> strings = JSON.parseArray("["一二三","二三四","三四五"]", String.class);System.out.(1));System.out.(0));}
}

结果:

二三四
一二三

总结:

JSON对于移动设备来说,尤其对于网络环境较差和流量限制的情况下,相对于XML格式的数据传输会更节省流量,传输效率更高。在这三种解析方式中FastJson是效率最高的,推荐使用。

本文发布于:2024-01-30 23:24:44,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170662828923587.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:三种   方式   json
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23