JSON有两种结构

json简单说就是javascript中的对象和数组,所以这两种结构就是对象和数组两种结构,通过这两种结构可以表示各种复杂的结构

1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {key:value,key:value,...}的键值对的结构,在面向对象的语言中,key为对象的属性,value为对应的属性值,所以很容易理解,取值方法为对象.key 获取属性值,这个属性值的类型可以是数字、字符串、数组、对象几种。

2、数组:数组在js中是中括号“[]”括起来的内容,数据结构为 ["java","javascript","vb",...],取值方式和所有语言中一样,使用索引获取,字段值的类型可以是数字、字符串、数组、对象几种。
经过对象、数组2种结构就可以组合成复杂的数据结构了。

一、使用fastjson

1、到mvn(https://mvnrepository.com库中引入

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

2、使用fastjson api

public static final Object parse(String text); // 把JSON字符串parse为JSONObject或者JSONArray 

public static final JSONObject parseObject(String text); // 把JSON字符串parse成JSONObject,注意的是,json字符串与json对象是不一样的

public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON字符串parse为JavaBean 

public static final JSONArray parseArray(String text); // 把JSON字符串parse成JSONArray 

public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON字符串parse成JavaBean集合 

public static final String toJSONString(Object object); // 将JavaBean序列化为JSON字符串

public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON字符串

public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray。

案例:

测试类

package com.sanyouhome.json;

import java.util.List;

class Hobby{
private Long itemId;
private String itemName; public Long getItemId() {
return itemId;
} public void setItemId(Long itemId) {
this.itemId = itemId;
} public String getItemName() {
return itemName;
} public void setItemName(String itemName) {
this.itemName = itemName;
}
}
public class Boss {
private Long id;
private String name; private List<Hobby> hobby; public Long getId() {
return id;
} public void setId(Long id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} public List<Hobby> getHobby() {
return hobby;
} public void setHobby(List<Hobby> hobby) {
this.hobby = hobby;
} @Override
public String toString() {
return "Boss{" +
"id=" + id +
", name='" + name + '\'' +
", hobby=" + hobby +
'}';
}
}

测试方法

//定义json字符串
String jsonStr = "{\"id\":\"10\",\"name\":\"chrchr\",\"hobby\":[{\"itemId\":\"20\",\"itemName\":\"篮球\"},{\"itemId\":\"21\",\"itemName\":\"游泳\"}]}"; //将json字符串转成json对象,parseObject
JSONObject jsonObject = JSON.parseObject(jsonStr);
//System.out.println(jsonObject.toString()); //将json对象转成java对象,toJavaObject,参数1【json对象】,参数2 【javaBean】
Boss boss1 = JSON.toJavaObject(jsonObject, Boss.class);
//System.out.println(boss1.toString()); //将json字符串转成java对象,parseObject,参数1【json字符串】,参数2【javaBean】
Boss boss2 = JSON.parseObject(jsonStr, Boss.class);
//System.out.println(boss2.toString()); Boss boss3 = new Boss();
boss3.setId(1L);
boss3.setName("chrchr");
Hobby hobby = new Hobby();
hobby.setItemId(30L);
hobby.setItemName("lanqiu");
ArrayList<Hobby> hobbies = new ArrayList<>();
hobbies.add(hobby);
boss3.setHobby(hobbies); //将java对象转成json对象,toJSONString
JSONObject o = (JSONObject) JSON.toJSON(boss3);
//System.out.println(o); //将java对象转成json字符串,toJSONString
String s = JSONObject.toJSONString(boss3);
//System.out.println(s); //将java对象转成json字符串,toJSONString
String s1 = new JSONObject().toJSONString(boss3); //获取json对象中的某值,getString
String name = jsonObject.getString("name");
System.out.println(name);

其中JSONObject是继承了JSON实现了Map<String, Object>,并且都是使用的Map中的方法。可以说JSONObject相当于Map<String, Object>

JSONObject extends JSON implements Map<String, Object>

JSONArray是继承了JSON实现List<Object>,并且都是使用的List中的方法。可以说JSONArray相当于List<Object>

JSONArray extends JSON implements List<Object>

3、使用net.sf.json.JSONObject

//json字符串、java对象、map转成JSONObject对象

JSONObject.fromObject(hashMap)

//json对象转换成java对象,并获取java对象属性 

JSONObject.toBean(jsonStu, Student.class); 

jsonObj.toString()

//json数组字符串、list集合转成JSONArray数组类型对象

JSONArray.fromObject(arrayList)
 

com.alibaba.fastjson和net.sf.json的区别的更多相关文章

  1. fastjson与net.sf.json区别

    在现在的开发当中,绝大多数引用阿里巴巴的fastjson.当然net.sf.json同样可以使用. 一.引入net.sf.json包 首先用net.sf.json包,当然你要导入很多包来支持commo ...

  2. net.sf.json日期类型格式化输出

    net.sf.json 日期类型格式化输出 Date, Timestamp ; 编写工具类 package cn.jorcen.commons.util; import java.text.DateF ...

  3. 全解史上最快的JOSN解析库 - alibaba Fastjson

    JSON,全称:JavaScript Object Notation,作为一个常见的轻量级的数据交换格式,应该在一个程序员的开发生涯中是常接触的.简洁和清晰的层次结构使得 JSON 成为理想的数据交换 ...

  4. alibaba fastjson常见问题FAQ

    English | 中文 1. 怎么获得fastjson? 你可以通过如下地方下载fastjson: maven中央仓库: http://central.maven.org/maven2/com/al ...

  5. Json和Map互转,四个包(org.json/net.sf.json/com.google.gson/com.alibaba.fastjson)

    目前使用的(org.json/net.sf.json/com.google.gson/com.alibaba.fastjson)这四种json-map互转,其他的以后在补充.............. ...

  6. net.sf.json.JSONOBJECT.fromObject 与 com.alibaba.fastjson.JSONObject.parseObject

    文章待补充,先写写以下知识点好了. NULL值处理之 net.sf.json.JSONObject 和 com.alibaba.fastjson.JSONObject区别 JSON作为一个轻量级的文本 ...

  7. net.sf.json和com.alibaba.fastjson两种json加工类的相关使用方法

    com.alibaba.fastjson Fastjson是一个Java语言编写的高性能功能完善的JSON库.它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Jav ...

  8. net.sf.json与fastjson两种jar包的使用

    首先说清楚:这两种方式是进行json解析的两种不同的方式而已,哪一种都可以. 一.引入net.sf.json包 首先用net.sf.json包,当然你要导入很多包来支持commons-beanutil ...

  9. 不同Json工具对空串和NULL的序列号处理:net.sf.json 和 fastjson

    目录 1.测试代码 2.测试结果: 3.总结: 4.注:Maven中引入net.sf.json的方式 net.sf.json 和 fastjson 对于空串和NULL的处理: 1.测试代码 packa ...

随机推荐

  1. stream,做减法,优化搜索代码。

    做一个搜索,三个输入条件,求这个条件的交集.起初我的思路是按照操作的流程,一步步的来做这三个筛选. let searchResults = []; //step1 根据id搜索,得到一个子集. if ...

  2. gulp+webpack+angular1的一点小经验(第一部分gulp与webpack的整合)

    时间匆匆如流水继上周熟悉了gulp的初步安装与环境配置以后,我的项目又进入了新的阶段! 这篇文章将把我这一周遇到的一些问题,以及解决的方式做一个小小的总结,不一定记的完整,但都是个人的一点经验,分享给 ...

  3. 一条数据的HBase之旅,简明HBase入门教程3:适用场景

    [摘要] 这篇文章继HBase数据模型之后,介绍HBase的适用场景,以及与一些关键场景有关的周边技术生态,最后给出了本文的示例数据 华为云上的NoSQL数据库服务CloudTable,基于Apach ...

  4. 用C在GBA上写光线追踪(0)配置开发编译环境

    前段时间用C#写了一个光线追踪程序,可以渲染圆球,平面这种基本图形,反射,光照,阴影,都大致尝试做了一下. ↑ C#实现的光线追踪     ↑ GBA上C实现的光线追踪 然而,在我打算继续深入优化的时 ...

  5. Hadoop 维护总结

    1. 启动 history ./sbin/mrjobhistorydaemon.sh start historyserver ./sbin/yarn-daemon.sh start proxyserv ...

  6. 浏览器/外网访问docker container中的hadoop

    假设你制作了个docker的 hadoop的镜像,镜像名叫 hd_image,如果想在外网的浏览器中访问hadoop的50070和8088端口,则在启动镜像hd_image时, 脚本如下: docke ...

  7. emmet的html和css使用技巧大全

    emmet html使用技巧大全 ! 初始化 >:后代+:兄弟^:向上*:乘法$:数字():分组#:id命名.:类命名 一.id,类命名p#infop.infoa[href=#] 二.后代:di ...

  8. LightOJ 1186 Icreable Chess(Nim博弈)

    You are given an n x n chess board. Only pawn is used in the 'Incredible Chess' and they can move fo ...

  9. margin重叠与穿透问题

    margin重叠是指两个同级元素之间.margin穿透指的是,子元素margin超出父元素而未被父元素包含的现象. 出现margin重叠的原因: 同一个BFC里面两个块级元素会出现margin折叠. ...

  10. 各种常用js函数实现

    1.bind function bind(fn, context) {    var args = Array.prototype.slice.call(arguments, 2);    retur ...