使用FastJson进行JSON编解码

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/guokaikevin/article/details/79188673

fastjson.jar 是阿里巴巴开发的Java下快速进行JSON编解码的工具包,方便使用。

1.编码

把object的内容编码成为json格式。

1.1 自定义data类编码成json格式。

如果数据类型是常用的,可以写成一个类,生成getter setter constructor,然后轻松利用JSON.toJSONString 进行编码。

//class user
class User{
        private String name;
        private int age;

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

        public String getName() {
            return name;
        }

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

        public int getAge() {
            return age;
        }

        public void setAge(int age) {
            this.age = age;
        }
    }
User u = new User("archmage", 19);
System.out.println(JSON.toJSONString(u));
//程序输出
{"age":19,"name":"archmage"}

1.2 利用HashMap编码json格式。
有时候临时需要构造json格式,但又不是常用的固定data数据时,可以使用HashMap进行编码,构造一个HashMap<String, Object> 然后调用JSON.toJSONString 进行编码。

HashMap<String, Object> hm = new HashMap<>();
hm.put("name", "archmage");
hm.put("age", 18);
List<String> hobbies = new ArrayList<String>();
hobbies.add("football");
hobbies.add("pingpong");
hobbies.add("basketball");
hm.put("hobby", hobbies);

System.out.println(JSON.toJSONString(hm));
//程序输出
{
    "name": "archmage",
    "age": 18,
    "hobby": [
        "football",
        "pingpong",
        "basketball"
    ]
}

2.解码

2.1 解码到data类

使用JSON.parseObject解码json字符串到data类

String str = "{\"age\":19,\"name\":\"archmage\"}";
User u = JSON.parseObject(str, User.class);
System.out.println(u.toString());
//程序输出
User{name='archmage', age=19}

2.2 解码到HashMap

在没有创建data类的时候,如果需要进行泛型解析,可以将json字符串解析到一个Map中,然后根据需要取值。

String str = "{\"age\":19,\"name\":\"archmage\"}";
Map<String, Object> map = JSON.parseObject(str, new TypeReference<Map<String, Object>>() {
});

Set set = map.keySet();
Iterator it = set.iterator();
while (it.hasNext()) {
    String key = (String) it.next();
    System.out.println(key + " = " + map.get(key));
}
//程序输出
name = archmage
age = 19

猜你喜欢

转载自blog.csdn.net/guokaikevin/article/details/79188673