java JSON 使用

原创
2019/02/20 10:38
阅读数 49

1. Java 中并没有Json 解析,需要引用第三方的类库:

  • Gson: 谷歌开发的 JSON 库,功能十分全面。
  • FastJson: 阿里巴巴开发的 JSON 库,性能十分优秀。
  • Jackson: 社区十分活跃且更新速度很快。

2. fastJson 简单应用:

  环境配置

在 Maven 构建的项目中,在 pom.xml 文件中加入以下依赖即可。

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <version>1.2.47</version>
</dependency>

   对json 构建和简单的解析

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import org.junit.Test;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

public class JsonTest {
    
    /**
     * 构造json 串
     */
    @Test
     public void testJson(){
         JSONObject object =  new JSONObject();
         //string
         object.put("string", "string");
         // int
         object.put("int", 2);
         // boolean
         object.put("boolean",true);
         // array 
         List<Integer> integers = Arrays.asList(1,2,3);
         object.put("list",integers);
         //null
         object.put("null", null);
         System.out.println(object);
     }
    


    /**
     * 解码
     */
    @Test
    public void testJson2(){
        String str ="{\"boolean\":true,\"string\":\"string\",\"list\":[1,2,3],\"int\":2}";
        JSONObject object = JSONObject.parseObject(str);
        // String
        String s = object.getString("string");
        System.out.println(s);
        // int 
        int i = object.getIntValue("int");
        System.out.println(i);
        //boolean
        boolean b = object.getBooleanValue("boolean");
        System.out.println(b);
        //list
        List<Integer> integers = JSON.parseArray(object.getJSONArray("list").toJSONString(),Integer.class);
        for(Integer in : integers){
            System.out.println(in+"#");
        }
        //null
        System.out.println(object.getString("null"));
        
    }

 /**

 程序执行结果图

*/

/**
     * 实体类之间同Json 的互换
     */
    @Test
    public void testJson3(){
        TestPerson json = new TestPerson(19,"李明");
        List<TestPerson> list = new ArrayList<TestPerson>();
        list.add(json);
        list.add(new TestPerson(12,"张三"));
        // 将集合 或者对象序列化成Json
        System.out.println(JSON.toJSON(json));
        System.out.println(JSON.toJSON(list));
        // JSON串反序列化成对象
        TestPerson person = JSON.parseObject("{\"name\":\"李明\",\"age\":19}",TestPerson.class);
        System.out.printf("name:%s,age:%d\n",person.getName(),person.getAge());
        
        String str ="[{\"name\":\"李四\",\"age\":20},{\"name\":\"张三\",\"age\":13}]";
        // 将数组json对象反序列化成集合
        List<TestPerson> listPerson = JSON.parseArray(str,TestPerson.class);
        for(TestPerson item:listPerson){
            System.out.println(item.getName());
            System.out.println(item.getAge());
        }
        
        // 没有对象直接解析成JSon 对象
        JSONObject jobj = JSON.parseObject("{\"name\":\"李明\",\"age\":19}");
        System.out.printf("name:%s,age:%d\n",jobj.getString("name"),jobj.getBigInteger("age")); // 同testJson2 方法
    
      // 没有对象直接解析JSON数组
        JSONArray jarr = JSON.parseArray("[{\"name\":\"李明\",\"age\":19},{\"name\":\"张三\",\"age\":12}]");
        System.out.println("Array:");
        for(int i=0,len=jarr.size();i<len;i++){
            JSONObject temp = jarr.getJSONObject(i);
            System.out.printf("name:%s,age:%d\n",temp.getString("name"),temp.getBigInteger("age"));
        }
        
        System.out.println("tt:");
        for(Object obj:jarr){
            System.out.println(obj.toString());
        }
    }

/**

执行结果

*/

}

public class TestPerson {

    private int age;
    private String name;
    
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public TestPerson(int age, String name) {
        super();
        this.age = age;
        this.name = name;
    }
    
    
    
    
}
3. net.sf json 使用:

https://www.cnblogs.com/nananana/p/9263708.html

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部