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. python 计算两个日期间的小时数

    #!/usr/bin/env python #encoding: utf-8 import datetime def dateDiffInHours(t1, t2): td = t2 - t1 ret ...

  2. Gradle+Groovy提高篇

    创建自定义任务 打开build.gradle文件,并在末尾添加以下内容: println "1" task howdy { println "2" doLast ...

  3. EventSource 实时传输数据

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. C++与数据结构课程设计---定票咨询系统

    订票咨询管理系统 设计编制一个订票管理系统,考虑旅客不同的要求.例如,选择不同的交通工具,希望在旅途中的时间尽可能地短,期望旅费尽可能省,或要求中转次数最少等.为旅客提供两种或三种最优决策.车票基本信 ...

  5. 这些C++常用内置函数你会几个??

    前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:Regina520  新手注意:如果你C++学的不好,可以去拿我的C+ ...

  6. FlyWay工作原理

    本文译自Flyway官方文档,原文地址https://flywaydb.org/getstarted/how 当你最开始将FlyWay指向一个空数据库时. 它会试着去查找schema历史表,如果此时数 ...

  7. 打样ov9650,无一幸免,失败告终,之调试记录

    新打样的ov9650,焊接了4块,其中只有2块有反应,另外两块无反应,于是使用热风台助焊,调试 助焊无效,怀疑焊盘有问题,于是拆掉 有问题的图像不正常 已看图像,只知道缺位,于是使用示波器检查,发现d ...

  8. css3(1)

    边框: 盒子圆角:border-radius:5px / 20%: border-radius:5px 4px 3px 2px; 左上,右上,右下,左下. 盒子阴影: box-shadow: box- ...

  9. telnet远程登陆

    这篇文章是第二次更新,内容为telnet远程登陆路由器,非常简单.直接进入正题,在网络配通的情况下,为路由器设置登陆密码和管理员密码,就可以通过pc机远程管理路由器或交换机. 目的: 网络拓扑图如下, ...

  10. java_计算个人所得税

    // import java.util.Scanner;public class Test10{ public static void main(String[] args){ // 创建Scanne ...