JSON对象转化API

Posted summer

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSON对象转化API相关的知识,希望对你有一定的参考价值。

1. 入门案例

package com.jt.pojo;

import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

@Data
@Accessors(chain = true)
@NoArgsConstructor
@AllArgsConstructor
public class ItemDesc {
    @TableId
    private Long itemId;
    private String itemDesc;
    private Date created;
    private Date updated;
}
package com.test;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jt.pojo.ItemDesc;
import org.junit.jupiter.api.Test;

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

public class TestObjectMapper {

    /**
     * 1.通过测试类 实现对象与JSON之间的转化
     * 重点知识:
     *  1.对象转化JSON 获取所有的getXXX()方法~~~~去除get~~~~~首字母小写~~形成属性
     *  2.JSON转化为对象  利用Class的反射机制实例化对象~~~~获取json中的属性
     *                    ~~~~拼接setXXX方法~~~~~调用对象的setXXX(arg)方法为对象赋值    */
     @Test
     public void test01() throws JsonProcessingException {
         ItemDesc itemDesc = new ItemDesc();
         itemDesc.setItemId(100L).setItemDesc("转化测试").setCreated(new Date());
         ObjectMapper objectMapper = new ObjectMapper();
         //1.将对象转化为JSON
         String json = objectMapper.writeValueAsString(itemDesc);
         System.out.println(json);
         //2.将JSON转化为对象     反射思想
         ItemDesc itemDesc2 = objectMapper.readValue(json, ItemDesc.class);
         System.out.println(itemDesc2.getCreated());
     }
      // 集合 转 json
     @Test
     public void testList() throws JsonProcessingException {
         List<ItemDesc> list = new ArrayList<>();
         list.add(new ItemDesc().setItemId(100L).setItemDesc("案例1"));
         list.add(new ItemDesc().setItemId(100L).setItemDesc("案例1"));
         ObjectMapper objectMapper = new ObjectMapper();
         String json = objectMapper.writeValueAsString(list);
         System.out.println(json);
         List list2 = objectMapper.readValue(json, list.getClass());
         System.out.println(list2);
     }

}

2. 封装ObjectMapperUtil

package com.util;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.jt.pojo.ItemDesc;

public class ObjectMapperUtil {

    private static final ObjectMapper MAPPER = new ObjectMapper();

    //1.对象转化为JSON
    public static String toJSON(Object obj){
        try {
            return MAPPER.writeValueAsString(obj);
        } catch (JsonProcessingException e) {
            //将检查异常.转化为运行时异常 之后被全局异常处理机制处理
            e.printStackTrace(); //日志打印....
            throw new RuntimeException(e);// 抛出运行时异常,交给自己写好的全局异常处理
        }
    }

    //2.JSON转化为对象  用户指定什么样的类型,返回什么样的对象????
    // 传什么就返回什么---用泛型来实现  <T> 表示定义泛型,java中先定义,后使用
    public static <T> T toObj(String json,Class<T> target){
        try {
            return MAPPER.readValue(json, target);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
            throw  new RuntimeException(e);
        }
    }
}

以上是关于JSON对象转化API的主要内容,如果未能解决你的问题,请参考以下文章

如何在 JSON 中为 v3 YouTube API 上传构建片段和状态

JAVA中json字符串如何转化为map对象,获取数据?

错误代码:错误域 = NSCocoaErrorDomain 代码 = 3840“JSON 文本没有以数组或对象和允许未设置片段的选项开头。”

微信小程序json数据如何处理?

如何将这个JSON字符串转化成list对象

实体类和JSON对象之间相互转化