fastjson常用api接口举例

fastjson使用教程

1.这里推荐一篇博客,博主写的挺好的,我这里做一些fastjson使用举例
https://blog.csdn.net/srj1095530512/article/details/82529759

2.Json是一种轻量级的数据交换格式,采用一种“键:值”对的文本格式来存储和表示数据,在系统交换数据过程中常常被使用,是一种理想的数据交换语言,下面代码演示下阿里fastjson的使用!

3.代码演示
(JSONObject代表json对象,JSONArray代表json对象数组 JSON代表JSONObject和JSONArray的转化)

package com.aop.aspect.validator.json;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import java.util.*;

public class JsonConvert {

    /**
     *      依赖
     *      * <dependency>
     *      *   <groupId>com.alibaba</groupId>
     *      *   <artifactId>fastjson</artifactId>
     *      *   <version>1.2.48</version>
     *      * </dependency>
     *
     *      如果是springboot 在starter-web中已经有了这个依赖直接用即可
     */

    public static void main(String[] args) {

        User user1 = new User(1L,"张三","12345678", Collections.singletonList(new Person("zhang", 20)));
        User user2 = new User(1L,"李四","12345678", Collections.singletonList(new Person("li", 40)));
        User user3 = new User(1L,"王五","12345678", Collections.singletonList(new Person("wang", 50)));
        User user4 = new User(1L,"赵六","12345678", Collections.singletonList(new Person("zhao", 60)));
        List<User> users = Arrays.asList(user1, user2, user3, user4);

        Map<String, User> map = new HashMap<String, User>(4);
        map.put("user1",user1);
        map.put("user2",user2);
        map.put("user3",user3);
        map.put("user4",user4);

        //java对象转 json串
        String string = JSON.toJSONString(user1);
        System.out.println(string);

        //java对象 转jsonObject对象;
        JSONObject o = (JSONObject)JSON.toJSON(user1);
        System.out.println(o.getString("username"));

        //json串 转回java对象
        User parseUser = JSON.parseObject(string,User.class);
        System.out.println(parseUser);
        System.out.println(parseUser.getUsername());

        //JsonObject对象 转回java对象
        User user = JSON.toJavaObject(o, User.class);
        System.out.println(user);

        System.out.println("===================== 分割线 上面是单个对象 json之间互相转换 下面是集合转换===============================");

        //java集合对象 转换json串
        String listJson = JSON.toJSONString(users);
        System.out.println(listJson);

        //java集合对象 转JsonObject对象
        JSONArray jsonObject = (JSONArray)JSON.toJSON(users);
        System.out.println(jsonObject);

        //json串 转回 java集合对象
        List<User> userList = JSON.parseArray(listJson, User.class);
        System.out.println(userList.get(0));

        //jsonArray 结合对象转回  java集合对象,这里就要分两步转回了
        String jsonObjectStrList = JSON.toJSONString(jsonObject);
        List<User> parseArray = JSON.parseArray(jsonObjectStrList, User.class);
        System.out.println(parseArray);

        System.out.println("===================== 这里单独说下如果bean类中还定义了私有对象如何获取私有变量 ===============================");
        //java对象 转jsonObject对象;
        JSONObject j = (JSONObject)JSON.toJSON(user1);
        //正常获取一般的私有变量
        System.out.println(j.getString("username"));
        //如果成员变量是java对象,必须用getObject()
        JSONArray jsonArray = (JSONArray)j.getObject("list", List.class);
        JSONObject personStr = (JSONObject)jsonArray.get(0);
        System.out.println(personStr.getString("nickName"));

        String mapJson = JSON.toJSONString(map);
        System.out.println(mapJson);

        Map mapUser = JSON.parseObject(mapJson, Map.class);
        System.out.println(mapUser);

        Set<String> set = mapUser.keySet();
        for (String key: set) {
            /*这里的获取到的value值是JSONObject并不user对象,直接会出现转换异常!
                如果这样写: User userJson = mapUser.get(key);
                Exception in thread "main" java.lang.ClassCastException:
                com.alibaba.fastjson.JSONObject cannot be cast to com.aop.aspect.validator.json.User
            */

            //下面这样就成功拿到对象,并用get方法获取到元素了
            User convertUser = JSON.toJavaObject((JSONObject) mapUser.get(key), User.class);
            System.out.println(convertUser.getUsername());
        }

        // JSON.parseObject和JSON.toJavaObject区别 前面这个方法是自身是json串转回java对象,后面这个是自身JsonObject对象,转回java对象
    }
}
package com.aop.aspect.validator.json;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Person {

    private String nickName = "昵称";

    private int age;
}

```clike
package com.aop.aspect.validator.json;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;
import org.springframework.data.annotation.Id;

import javax.validation.constraints.NotNull;
import java.util.List;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class User {
    /*
    lombok.AllArgsConstructor 增加全参构造器
    lombok.NoArgsConstructor 增加无参构造
    lombok.RequiredArgsConstructor 增加必选参数构造器
    */

    @Id
    @NotNull(message = "id不能为空!")
    private Long id;

    @NotNull(message = "用户名不能为空")
    private String username = "youSelf";

    @NotNull(message = "密码不能为空")
    @Length(min = 8,message = "密码不能小于8位数")
    private String password;

    private List<Person> list;
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值