java JSON 使用

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);
     }
    cffb55384f8104d7dbd8d542c3e211a57c7.jpg


    /**
     * 解码
     */
    @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"));
        
    }

 /**

 程序执行结果图

*/

608fc385276708e6b1a4ce35f510a32e877.jpg

/**
     * 实体类之间同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());
        }
    }

/**

执行结果

*/

8924db97628fead62672ec9fff08dd7b48c.jpg

}

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;
    }
    
    
    
    
}

转载于:https://my.oschina.net/kuchawyz/blog/3012259

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值