json转对象 对象转JSON

fastjson介绍

FastJson是阿里巴巴的的开源库,用于对JSON格式的数据进行解析和打包。

特点如下:

  1. 能够支持将java bean序列化成JSON字符串,也能够将JSON字符串反序列化成Java bean。
  2. 顾名思义,fastjson操作 JSON的速度是非常快的。
  3. 无其他包的依赖。
  4. 使用比较方便。

maven依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>fastjson</artifactId>
    <!--(起码1.2.48以上)因为这个版本一下存在漏洞-->
    <version>版本根据自己需要</version>
</dependency>

fastjson常用API

public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray

public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject 
    
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean 

public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 

public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 

public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 

public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 

public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray。

java类转换为json字符串:

/**
     * java对象转换为json字符串
     */
    @Test
    public void objToJson() {
        //简单对象转换
        User user = new User("root", "123456");
        //调用toJSONString()
        String userJson = JSON.toJSONString(user);
        System.out.println("java类转换为json串:" + userJson);

        //集合转json串
        User user1 = new User("zhangsan", "123456");
        User user2 = new User("lisi", "000");
        List<User> users = new ArrayList<User>();
        users.add(user1);
        users.add(user2);
        //调用toJSONString()
        String usersjson = JSON.toJSONString(users);
        System.out.println("集合转json串:" + usersjson);

        //复杂java类转换对象
        UserGroup userGroup = new UserGroup("userGroup", users);
        //调用toJSONString()
        String userGroupJson = JSON.toJSONString(userGroup);
        System.out.println("复杂java类转换json串:" + userGroupJson);
    }

结果

java类转换为json串:{"password":"123456","username":"root"}
集合转json串:[{"password":"123456","username":"zhangsan"},{"password":"000","username":"lisi"}]
复杂java类转换json串:{"name":"userGroup","users":[{"password":"123456","username":"zhangsan"},{"password":"000","username":"lisi"}]}

json字符串转为java类:

/**
     * json字符串转为java类
     * 注:字符串中使用双引号需要转义 (" --> \"),这里使用的是单引号,易读性会好很多。
     * json串以“{}”包裹,转换为java类时,使用:parseObject();
     * json串以“[]”包裹,转换为java类时,使用:parseArray();
     */
    @Test
    public void jsonToObj(){
        /* json字符串转简单java对象
         * 字符串:{"password":"123456","username":"dmego"}
         */
        String jsonStr1 = "{'password':'123456','username':'ggf'}";
        // 调用parseObject()
        User user = JSON.parseObject(jsonStr1, User.class);
        System.out.println("json字符串转简单java对象:"+user.toString());

        /*
         * json字符串转List<Object>对象
         * 字符串:[{"password":"123123","username":"zhangsan"},
         *        {"password":"321321","username":"lisi"}]
         */
        String jsonStr2 = "[{'password':'123123','username':'zhangsan'},{'password':'321321','username':'lisi'}]";
        // 调用parseArray()将字符串转为集合
        List<User> users = JSON.parseArray(jsonStr2, User.class);
        System.out.println("json字符串转List<Object>对象:"+users.toString());

        /*json字符串转复杂java对象
         * 字符串:{"name":"userGroup","users":[{"password":"123123","username":"zhangsan"},{"password":"321321","username":"lisi"}]}
         * */
        String jsonStr3 = "{'name':'userGroup','users':[{'password':'123123','username':'zhangsan'},{'password':'321321','username':'lisi'}]}";
        UserGroup userGroup = JSON.parseObject(jsonStr3, UserGroup.class);
        System.out.println("json字符串转复杂java对象:"+userGroup);
    }

结果

json字符串转简单java对象:User{username='ggf', password='123456'}
json字符串转List<Object>对象:[User{username='zhangsan', password='123123'}, User{username='lisi', password='321321'}]
json字符串转复杂java对象:UserGroup{name='userGroup', users=[User{username='zhangsan', password='123123'}, User{username='lisi', password='321321'}]}

读取本地JSON文件 转

@Test
    public void jsonToComplexObj() {
        // 读取类路径下的caipu.json文件,这里使用了第三方工具hutool进行读取json文件
        // 工具类参见:https://hutool.cn/docs/#/
        String jsonStr = FileUtil.readUtf8String(new File("text.json"));
        System.out.println(jsonStr);
        // 转换为java类
        ResponseData resp = JSON.parseObject(jsonStr, ResponseData.class);
        System.out.println(resp);

        // 通过对象操作数据
        // 获取响应码resultcode
        System.out.println(resp.getResultcode());
        // 获取响应数据
        ResponseData.ResultBean result = resp.getResult();
        System.out.println("result响应数据:" + result);
}
/**
     * 对json串的操作
     */
    @Test
    public void operateJson() {
        // 读取本地json文本
        String jsonStr = FileUtil.readUtf8String(new File("text.json"));
        // 创建json对象
        JSONObject jsonObj = JSONObject.parseObject(jsonStr);
        // 操作json内容
        // 获取响应码resultcode
        System.out.println(jsonObj.get("resultcode"));
        // 获取响应信息reason
        System.out.println(jsonObj.getString("reason"));
        // 获取data
        JSONObject resJsonObj = (JSONObject)jsonObj.get("result");
        System.out.println(resJsonObj.getString("data"));

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值