com.alibaba.fastjson和net.sf.json的区别

JSON有两种结构

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

1、对象:对象在js中表示为“{}”括起来的内容,数据结构为 {keyvalue,keyvalue,...}的键值对的结构,在面向对象的语言中,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对象,parseObjectJSONObject 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对象,toJSONStringJSONObject o = (JSONObject) JSON.toJSON(boss3);//System.out.println(o);

//将java对象转成json字符串,toJSONStringString s = JSONObject.toJSONString(boss3);//System.out.println(s);

//将java对象转成json字符串,toJSONStringString s1 = new JSONObject().toJSONString(boss3);

//获取json对象中的某值,getStringString 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)

 

原文地址:https://www.cnblogs.com/caohanren/p/11668292.html

时间: 2024-11-07 03:04:33

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

alibaba fastjson常见问题FAQ

English | 中文 1. 怎么获得fastjson? 你可以通过如下地方下载fastjson: maven中央仓库: http://central.maven.org/maven2/com/alibaba/fastjson/ Sourceforge.net : https://sourceforge.net/projects/fastjson/files/ 在maven中如何配置fastjson依赖 fastjson最新版本都会发布到maven中央仓库,你可以直接依赖. <dependen

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

首先说清楚:这两种方式是进行json解析的两种不同的方式而已,哪一种都可以. 一.引入net.sf.json包 首先用net.sf.json包,当然你要导入很多包来支持commons-beanutils-1.7.0.jar commons-collections-3.1.jar commons-lang-2.5.jar commons-logging.jar ezmorph-1.0.3.jar json-lib-2.1-jdk15.jar,自己百度下载吧 然后使用方法: json串:{\"cod

JSON工具类库: alibaba/fastjson 使用记录

JSON工具类库: alibaba/fastjson 使用记录 一.了解JSON JSON标准规范中文文档: http://www.json.org/json-zh.html 最佳实践:http://kimmking.github.io/2017/06/06/json-best-practice/ (JSON的高级使用,特别十分有参考价值) 二.项目地址和Wiki: Git地址: https://github.com/alibaba/fastjson Wiki:https://github.co

java alibaba fastJson 遍历数组json

import java.util.*; import com.alibaba.fastjson.*; public class Test { public static void main(String[] args) { //方法1 String json = "[{\"companyId\":\"111111111\",\"companyName\":\"Huuuu\",\"_uid\":10

com.alibaba.fastjson.JSON对类对象的序列化与反序列化

1. 目标 把类的对象存储到字符串可存储 2. 类定义 public interface JsonInterface { } mport com.alibaba.fastjson.JSON; import lombok.Getter; import lombok.Setter; @Setter @Getter public class JsonVo implements JsonInterface { private String id; private String name; public

alibaba的FastJson找不到JSON对象问题

在现在出现使用JSON.toJsonString()方法时,可能没有JSON这个对象. 这种问题可能是下载的jar版本比较高.在低版本的jar使用的是JSON对象. 我使用的是1.2.47版本的jar,在使用JSON对象是一直找不到,不知道哪里出了问题. 最后挨个尝试了一下,有可能在jar比较高时,使用的是JSONUtil对象. FastJSON jar包 依赖下载地址     https://mvnrepository.com/artifact/com.alibaba/fastjson/1.2

42-字符串到json 的错误 com.alibaba.fastjson.JSONObject cannot be cast to java.lang.String

json: {"updated_at":1551780617,"attr":{"uptime_h":3,"uptime_m":17},"did":"GBBxjJYAxE4apkxwEzR3"} Map rMap = (Map) JSON.parse("{"updated_at":1551780617,"attr":{"uptim

阿里巴巴 fastjson-1.2.12.jar json解析异常java.lang.ClassFormatError: Invalid method Code length 66865 in class file com/alibaba/fastjson/serializer/ASMSerializer_6_UserKdlb

承接上篇:fastjson反序列化LocalDateTime失败的问题java.time.format.DateTimeParseException: Text '2019-05-24 13:52:11' could not be parsed at index 10 之前在线上用的版本是fastjson-1.2.7.jar 一切正常,更换以后时间解析看似一切正常. 因为在系统中设计json反序列化的地方比较多,刚刚放到生产环境,app那边的接口报错了 java.lang.ClassFormat

JSON parse error: default constructor not found. class java.time.YearMonth; nested exception is com.alibaba.fastjson.JSONException: default constructor not found. class java.time.YearMonth

java8新出的YearMonth可以方便的用来表示某个月.我的项目中使用springmvc来接收YearMonth类型的数据时发现 x-www-from-urlencoded 格式的数据可以使用"2018-12"的类型接收,但是在post请求中 接收application/json的数据时出现以下错误 2020-02-18 11:18:25.284 WARN 16212 --- [nio-8090-exec-2] .w.s.m.s.DefaultHandlerExceptionRes