com.alibaba.fastjson和net.sf.json的区别
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的区别的更多相关文章
- fastjson与net.sf.json区别
		
在现在的开发当中,绝大多数引用阿里巴巴的fastjson.当然net.sf.json同样可以使用. 一.引入net.sf.json包 首先用net.sf.json包,当然你要导入很多包来支持commo ...
 - net.sf.json日期类型格式化输出
		
net.sf.json 日期类型格式化输出 Date, Timestamp ; 编写工具类 package cn.jorcen.commons.util; import java.text.DateF ...
 - 全解史上最快的JOSN解析库 - alibaba Fastjson
		
JSON,全称:JavaScript Object Notation,作为一个常见的轻量级的数据交换格式,应该在一个程序员的开发生涯中是常接触的.简洁和清晰的层次结构使得 JSON 成为理想的数据交换 ...
 - alibaba fastjson常见问题FAQ
		
English | 中文 1. 怎么获得fastjson? 你可以通过如下地方下载fastjson: maven中央仓库: http://central.maven.org/maven2/com/al ...
 - 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互转,其他的以后在补充.............. ...
 - net.sf.json.JSONOBJECT.fromObject 与 com.alibaba.fastjson.JSONObject.parseObject
		
文章待补充,先写写以下知识点好了. NULL值处理之 net.sf.json.JSONObject 和 com.alibaba.fastjson.JSONObject区别 JSON作为一个轻量级的文本 ...
 - net.sf.json和com.alibaba.fastjson两种json加工类的相关使用方法
		
com.alibaba.fastjson Fastjson是一个Java语言编写的高性能功能完善的JSON库.它采用一种“假定有序快速匹配”的算法,把JSON Parse的性能提升到极致,是目前Jav ...
 - net.sf.json与fastjson两种jar包的使用
		
首先说清楚:这两种方式是进行json解析的两种不同的方式而已,哪一种都可以. 一.引入net.sf.json包 首先用net.sf.json包,当然你要导入很多包来支持commons-beanutil ...
 - 不同Json工具对空串和NULL的序列号处理:net.sf.json 和 fastjson
		
目录 1.测试代码 2.测试结果: 3.总结: 4.注:Maven中引入net.sf.json的方式 net.sf.json 和 fastjson 对于空串和NULL的处理: 1.测试代码 packa ...
 
随机推荐
- Redis自动化安装以及集群实现
			
Redis实例安装 安装说明:自动解压缩安装包,按照指定路径编译安装,复制配置文件模板到Redis实例路的数据径下,根据端口号修改配置文件模板 三个必须文件:1,配置文件,2,当前shell脚本,3, ...
 - Hive Hadoop 解析 orc 文件
			
解析 orc 格式 为 json 格式: ./hive --orcfiledump -d <hdfs-location-of-orc-file> 把解析的 json 写入 到文件 ./hi ...
 - 卸载&&更新docker(ubuntu)
			
卸载docker: apt-get purge lxc-docker apt-get autoremove 更新docker: apt-get update apt-get install lxc-d ...
 - MyCat学习 ------分库分表 随笔
			
垂直切分.水平切分 1.垂直分库,解决库中表太多的问题. 2.垂直分表,解决表中列太多的问题.例如 商品表 包含 产地.二维码 .时间.价格.各个列.分为不同的小表. 水平切分, 大数据表拆分为小表 ...
 - python实现十大核心算法(桶排没实例)
			
# author:sevenduke # 2019-06-11 # 一.交换排序 # 排序算法的温故:冒泡排序 def dubblesort(arr): for i in range(0, len(a ...
 - 利用Python爬虫轻松挣外快的几个方法(值得收藏)
			
前言本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理.作者:小猿猿er 在下写了10年Python,期间写了各种奇葩爬虫,挣各种奇葩 ...
 - 【CSS】343- CSS Grid 网格布局入门
			
CSS Grid(网格) 布局使我们能够比以往任何时候都可以更灵活构建和控制自定义网格.Grid(网格) 布局使我们能够将网页分成具有简单属性的行和列. 它还能使我们在不改变任何HTML的情况下,使用 ...
 - 面试题-JS中的作用域相关问题
			
对象类型: 原始数据类型存储的是值,而对象类型存储的是地址(指针).下面的这个例子就比较有意思了. 先看题: function test(person) { person.age = 26 perso ...
 - python爬虫--分布式爬虫
			
Scrapy-Redis分布式爬虫 介绍 scrapy-redis巧妙的利用redis 实现 request queue和 items queue,利用redis的set实现request的去重,将s ...
 - textarea增加字数监听且高度自适应(兼容IE8)
			
1.封装方法: var textareaListener = { /*事件监听器兼容 * *attachEvent——兼容:IE7.IE8:不兼容firefox.chrome.IE9.IE10.IE1 ...