首页 > 其他分享 >JackJson对象转化

JackJson对象转化

时间:2024-03-27 18:15:01浏览次数:24  
标签:return 对象 object list param 转化 json JackJson public

  • 当接受jsonKey首字母为大写的时候需要用JSONProperty 配合 JsonIngore处理
package com.example.demoboot.dto;

import com.example.demoboot.entity.Person;

import java.util.List;

/**
 * 封装response 返回的data对象
 对象太多可以用宽对象,把所有需要的都写一起
 *
 * @author hello
 */
public class CommonResponseDataDto {

    private List<Person> list;
    
    @JsonProperty(value = "P1")
    private Person p1;

    public List<Person> getList() {
        return list;
    }

    public void setList(List<Person> list) {
        this.list = list;
    }

    @JsonIgnore
    public Person getP1() {
    return p1;
    }

    @JsonIgnore
    public void setP1(Person p1) {
    this.p1 = p1;
    }
}
  • JackJson Object对象转Bean (这里指CommonResponseDataDto)
  • 工具类
package com.example.demoboot.util;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

/**
 * @author hello
 */
public class JackJsonUtil {

    private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();

    /**
     * json数组字符串转java list
     *
     * @param jsonArray     json
     * @param typeReference reference
     * @param <T>           t
     * @return list
     */
    public static <T> T toJavaObjectList(String jsonArray, TypeReference<T> typeReference) {
        T t = null;
        try {
            t = OBJECT_MAPPER.readValue(jsonArray, typeReference);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return t;
    }

    /**
     * json 数组字符串转java list
     *
     * @param object        object
     * @param typeReference reference
     * @param <T>           t
     * @return list
     */
    public static <T> T toJavaObjectList(Object object, TypeReference<T> typeReference) {
        String jsonArray;
        if (object instanceof String) {
            jsonArray = object.toString();
        } else {
            jsonArray = formatJsonString(object);
        }
        return toJavaObjectList(jsonArray, typeReference);
    }

    /**
     * 转json字符串为Java 对象
     *
     * @param jsonString jsonString
     * @param tClass     Bean 类型
     * @param <T>        Class
     * @return java 对象
     */
    public static <T> T toJavaObject(String jsonString, Class<T> tClass) {
        T t = null;
        try {
            t = OBJECT_MAPPER.readValue(jsonString, tClass);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return t;
    }


    /**
     * 转任意对象为Java对象
     *
     * @param object object
     * @param tClass Bean 类型
     * @param <T>    Class
     * @return java 对象
     */
    public static <T> T toJavaObject(Object object, Class<T> tClass) {
        String json;
        if (object instanceof String) {
            json = object.toString();
        } else {
            json = formatJsonString(object);
        }
        return toJavaObject(json, tClass);
    }

    /**
     * 将Object对象转化为jsonString
     *
     * @param o 任意对象
     * @return json字符串
     */
    public static String formatJsonString(Object o) {
        try {
            return OBJECT_MAPPER.writeValueAsString(o);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
        return null;
    }
}

测试:

String str = "[{\n" +
        "\"name\":\"abc\",\n" +
        "\"age\":23\n" +
        "\n" +
        "},{\n" +
        "\"name\":\"jin\",\n" +
        "\"age\":44\n" +
        "}]";
List<Person> peoples = JackJsonUtil.toJavaObjectList(str, new TypeReference<>() {
});
List<Person> p = JackJsonUtil.toJavaObjectList(peoples, new TypeReference<>() {
});

 

标签:return,对象,object,list,param,转化,json,JackJson,public
From: https://www.cnblogs.com/coderdxj/p/18099926

相关文章

  • List中的add方法添加对象时出现重复的问题
    现象:用list存储User对象信息,当存储多个对象时,发现存储的数据都是一样的之前代码:Useruser=newUser();List<User>list=newArrayList<>();for(inti=0;i<5;i++){user.setName("Tom"+i);user.setAge("18"+i);user.setLocation("......
  • C++面向对象整理(10)之异常与捕获(try、catch、throw、noexcept)
    C++面向对象整理(10)之异常与捕获(try、catch、throw、noexcept)注:整理一些突然学到的C++知识,随时mark一下例如:忘记的关键字用法,新关键字,新数据结构C++的异常的捕获C++面向对象整理(10)之异常与捕获(try、catch、throw、noexcept)一、异常与捕获1、C++异常处理关键字:try,......
  • Java对象拷贝之MapStruct使用
    gradle依赖implementationgroup:'org.mapstruct',name:'mapstruct-jdk8',version:'1.3.1.Final'annotationProcessor"org.mapstruct:mapstruct-processor:1.3.1.Final"mapper(前提是原始对象与目标对象属性一致,不一致的需要单独处理)@Mapperpublici......
  • 常见问题系列(一)对象序列化
    对象序列化是非常常见的技术,序列化为Xml或者Json字符串,这里记录使用微软内置库序列化为Xml遇到的一个问题。原始代码:usingSystem;usingSystem.Collections.Generic;usingSystem.IO;usingSystem.Text;usingSystem.Xml.Serialization;namespaceSerializeObject{......
  • 面向对象【Annotation注解】
    文章目录注解概述注解与注释常见的Annotation最基本的注解使用@Override@Override@SuppressWarnings元注解@Retention@Target@Documented@Inherited自定义注解格式定义使用注解概述注解(Annotation)是从JDK5.0开始引入,以“@注解......
  • java定义和使用类和对象
    1.下面是一个教师类Teacher,用于学校某个系部的管理。系部在管理教师时,所关心的信息主要有教师编号、姓名、性别、年龄、家庭住址、电话号码等,于是抽取这些属性来描述"教师"这个实体。考虑到教师年龄、家庭住址、电话号码等不宜对无关人员公开,于是将这些数据设为私有的成员变量(即......
  • 1.设计模式与面向对象
    目录1.设计模式2.设计模式的分类3.面向对象4.接口1.设计模式       设计模式是对软件设计中普遍存在或反复出向的各种问题所提出的解决方案。每一个设计模式系统地被命名、解释和评价了面向对象系统中一个重要和重复出现的设计。2.设计模式的分类创建型模式:工厂......
  • 2.面向对象设计原则
    目录1.开放封闭原则2.里氏替换原则3.依赖倒置原则4.接口隔离原则5.单一职责原则1.开放封闭原则一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。即软件实体应该在不修改原代码的情况下进行修改。2.里氏替换原则所有引用父类的地方必须能透明地使用其子类地方必......
  • Java(匿名对象和命名对象)——进一步了解对象
    1.前面已知,想要抽象出一个对象,首先要写好它的模板——类但是存在一个问题,我们想创建一个对象,要用构造方法去初始化这个对象。但是如果我们只想在某个时候只使用这个对象一次,之后就不要用了,那是不是这个对象就会占我们的内存,就像我们借走别人的笔(这个对象),之后要还给别人。所以......
  • 面向对象 栈和堆
    Me:对象在栈中,属性在堆中,属性属于对象的一部分GPT:在Java中,对象的引用存储在栈中,而对象本身存储在堆中,属性和方法就是对象的本身。对象的属性确实存储在堆中,但是对象本身并不是存储在栈中,而是通过引用指向堆中的实际对象。Me:那对象的引用是在栈中,对象本身在堆中,那可以比喻成堆为......