阿里JSONObject 常用方法介绍

概述

最近在进行数据解析的工作,遇到了Json和对象之间的转化等问题,使用了com.alibaba.fastjson.JSONObject阿里的解析工具进行了处理,这里记录下一些常用的方法.

环境

<dependencies>
   <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>fastjson</artifactId>
      <version>1.2.50</version>
    </dependency>
</dependencies>

常用方法测试

package cn.zhangyu.jsonobject;

import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;

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

public class JsonClass {
    public static void main(String[] args) {
        //把json字符互传转化为对象
        //json2Bean();

        //把json字符串转化为List<Bean>
        //json2ListBean();

        //把json字符串转化为List<Bean>
        //json2ListBean1();

       // bean2Json();

        //复杂类型的bean转化为json
        //complexBean2Json();

        //复杂类型的json转化为bean; 对比parseObject和parseArray区别
        //complexJson2Bean();

        //遍历json串中的属性值
        get();
    }

    public static void json2Bean(){
        String jsonStr = "{\"id\":1001,\"name\":\"Jobs\"}";
        User user = JSONObject.parseObject(jsonStr, User.class);
        System.out.println(user);
    }

    public static void json2ListBean(){
        String jsonStr = "[{\"id\":1001,\"name\":\"Jobs\"},{\"id\":1002,\"name\":\"jack\"}]";
        List<User> list1 = JSONObject.parseObject(jsonStr, new TypeReference<List<User>>() {});
        list1.forEach(user -> System.out.println(user));
    }

    private static void json2ListBean1() {
        String jsonStr = "[{\"id\":1001,\"name\":\"Jobs\"},{\"id\":1002,\"name\":\"jack\"}]";
        List<User> users = JSONObject.parseArray(jsonStr, User.class);
        users.forEach(user -> System.out.println(user));

    }

    public static void bean2Json(){
        String tom = JSONObject.toJSONString(new User(1000, "tom"));
        System.out.println(tom);

    }
    public static void complexBean2Json(){
        Dog dog = new Dog("大黄","yellow");
        Dog  dog1 = new Dog("小黑","black");
        List<Dog> list = new ArrayList<>();
        list.add(dog);
        list.add(dog1);
        Person person = new Person("张三",list);
        String jsonString = JSONObject.toJSONString(person);
        System.out.println(jsonString);
    }

    public static void complexJson2Bean(){
       String jsonString = "{\"dog\":[{\"color\":\"yellow\",\"name\":\"大黄\"},{\"color\":\"black\",\"name\":\"小黑\"}],\"name\":\"张三\"}";
       //错误方式
       //List<Person> people = JSONObject.parseArray(jsonString, Person.class);

        List<Person> people = JSONObject.parseArray(jsonString, Person.class);
        //准确方式
        Person person = JSONObject.parseObject(jsonString, new TypeReference<Person>() {});
        System.out.println(person);
    }
    public static void get(){
        String jsonStr = "{\"id\":1001,\"name\":\"Jobs\"}";
        JSONObject.parseObject(jsonStr).forEach((key,value) -> System.out.println(key+"="+value));
    }

  //TODO...
}

实体类

  • user
package cn.zhangyu.jsonobject;

import java.io.Serializable;

public class User implements Serializable {
    private static final long serialVersionUID = 6985088697258756730L;
    private int id;
    private String name;

    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                '}';
    }
}

  • person
package cn.zhangyu.jsonobject;

import java.util.List;

public class Person {
    private String name;
    private List<Dog> dog;

    public Person(String name, List<Dog> dog) {
        this.name = name;
        this.dog = dog;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Dog> getDog() {
        return dog;
    }

    public void setDog(List<Dog> dog) {
        this.dog = dog;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", dog=" + dog +
                '}';
    }
}

  • Dog
package cn.zhangyu.jsonobject;

public class Dog {
    private String name;
    private String color;

    public Dog(String name, String color) {
        this.name = name;
        this.color = color;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", color='" + color + '\'' +
                '}';
    }
}

方法测试中都是一些基本的方法,网上也有很多资料,大家应该很容易看懂,就不多解释了.详细的可以继续查看源码.后续作者用到的方法也会继续加进去.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值