JSON总结-持续更新补充

2021-07-09 18:06

阅读:464

标签:hashset   .com   str   字符串转换   hash   com   json-lib   rgs   des   

基本的json格式

{
    "name": "jobs", 
    "boolean": true, 
    "age": null, 
    "num": 88
}

json对象

{
    "starcraft": {
        "INC": "Blizzard", 
        "price": 60
    }
}

json数组

{
    "person": [
        "jobs", 
        60
    ]
}

json对象数组

{
    "array": [
        {
            "name": "jobs"
        }, 
        {
            "name": "bill", 
            "age": 60
        }, 
        {
            "product": "war3", 
            "type": "game", 
            "popular": true, 
            "price": 60
        }
    ]
}

常见的JSON解析工具

json-lib的net.sf.json的json处理包

  优点:老牌,应用广泛

  缺点:jar包依赖多、转换成bean存在不足(bean里面存在list集合,map等)、性能不足

  依赖jar包:

    - commons-beanutils-1.8.0.jar    

    - commons-collections-3.2.1.jar

    - commons-lang-2.5.jar

    - commons-logging-1.1.1.jar

    - ezmorph-1.0.6.jar

    - json-lib-2.4-jdk15.jar

阿里巴巴官方出的fastjson处理包

  优点:高性能,不需要额外的jar,可以直接跑在jdk上面,速度极致

  缺点:bean转换为json时可能会存在错误(类型上面)

谷歌官方出品的Gson

  优点:无依赖,直接跑在jdk上,只要存在getter、setter方法就可以解析,神器!

  缺点:必须在对象转换之前创建好对象的类型以及其成员,性能稍差

json-lib对json数据的处理

package com.glorze.json;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import net.sf.json.JSONArray;
import net.sf.json.JSONObject;

public class JsonlibUtil {
    public static void main(String[] args) {
        Set bookSet = new HashSet();
        Book book=new Book();
        book.setId("0808");
        book.setName("基督山伯爵");
        bookSet.add(book);

        Student student = new Student();
        student.setName("高老四");
        student.setAge(25);
        student.setDescribe("男神、帅哥");
        student.setSex("男");
        student.setBooks(bookSet);

        //Bean转换成json字符串
        String json = JSONObject.fromObject(student).toString();
        System.out.println("Bean转换成Json:"+json);

        //json转Bean
        String jsonStr = "{\"id\":\"2\",\"name\":\"Json技术\"}";
        JSONObject jsonObject = JSONObject.fromObject(jsonStr);
        Book book2 = (Book) JSONObject.toBean(jsonObject,Book.class);
        System.out.println("json字符串转Bean:"+book2.toString());

        //json转换成List(Set同理)
        String jsonStr2 = "[{\"id\":\"1\",\"name\":\"Java技术\"},{\"id\":\"2\",\"name\":\"Json技术\"}]";
        JSONArray jsonArray = JSONArray.fromObject(jsonStr2);
        JSONObject jsonObject2 = null;
        Book book3 = null;
        int size = jsonArray.size();
        List list = new ArrayList(size);
        for (int i = 0; i 

fastjson对json数据的处理

package com.glorze.json;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.TypeReference;

public class FastjsonUtil {
    public static void main(String[] args) {
        Set bookSet = new HashSet();
        Book book=new Book();
        book.setId("0808");
        book.setName("基督山伯爵");
        bookSet.add(book);

        Student student = new Student();
        student.setName("高老四");
        student.setAge(25);
        student.setDescribe("男神、帅哥");
        student.setSex("男");
        student.setBooks(bookSet);

        //Bean转换成json字符串
        String json=JSON.toJSONString(student, false);// true:格式化 false(默认):不格式化
        System.out.println("Bean转换成Json:"+json);

        //json转Bean
        String jsonStr = "{\"id\":\"2\",\"name\":\"Json技术\"}";
        Book book2 = JSON.parseObject(jsonStr,Book.class);
        System.out.println("json字符串转Bean:"+book2.toString());

        //json转换成List(Set同理)
        String jsonStr2 = "[{\"id\":\"1\",\"name\":\"Java技术\"},{\"id\":\"2\",\"name\":\"Json技术\"}]";
        List bookList = JSON.parseObject(jsonStr2,new TypeReference>(){});
        System.out.println("json字符串转List:"+JSON.toJSONString(bookList,true));

    }
}

Gson对json数据的处理

package com.glorze.json;

import java.util.HashSet;
import java.util.List;
import java.util.Set;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;

public class GsonUtil {
    public static void main(String[] args) {

        Set bookSet = new HashSet();
        Book book=new Book();
        book.setId("0808");
        book.setName("基督山伯爵");
        bookSet.add(book);

        Student student = new Student();
        student.setName("高老四");
        student.setAge(25);
        student.setDescribe("男神、帅哥");
        student.setSex("男");
        student.setBooks(bookSet);

        //bean转换成json
        Gson gson = new Gson();
        String json = gson.toJson(student);
        System.out.println("Bean转换成Json:"+json);

        //json转Bean
        String jsonStr = "{\"id\":\"2\",\"name\":\"Json技术\"}";
        Book book2 = gson.fromJson(jsonStr, Book.class);
        System.out.println("json字符串转换成Bean:"+book2.toString());

        //json转换成List(Set同样)
        String jsonList = "[{\"id\":\"1\",\"name\":\"Json技术\"},{\"id\":\"2\",\"name\":\"java技术\"}]";
        List bookList = gson.fromJson(jsonList, new TypeToken>(){}.getType());
        String listJson = gson.toJson(bookList);
        System.out.println("json转换成List:"+listJson);

    }
}

附三个封装工具类

JsonlibUtil.java FastjsonUtil.java GsonUtil.java

下载地址

网盘链接:http://pan.baidu.com/s/1c2mu1Ni 密码:72qh

 

更多内容请查看 高老四博客

JSON总结-持续更新补充

标签:hashset   .com   str   字符串转换   hash   com   json-lib   rgs   des   

原文地址:http://www.cnblogs.com/Glorze/p/7092174.html


评论


亲,登录后才可以留言!