女汉子学者 2023-12-28 17:14 采纳率: 20%
浏览 1
已结题

实体copy优化,mapstruct学习

mapstruct json转对象如何实现,
下面这种格式的怎么转换?

{
    "16842203976629393": {
        "onlyValue": 1,
        "type": "2",
        "key": "16842203976629393",
        "isChecked": true,
        "hasChanged": true,
        "values": [{
            "onlyValue": 1,
            "value": 1,
            "key": "16842203976629393"
        }],
        "isVariable": false
    },
    "16842204057076081": {
        "componentType": "select",
        "isVariable": false,
        "key": "16842204057076081",
        "onlyValue": 1,
        "type": "2",
        "groupKey": "16842203976629393",
        "values": [{
            "key": "168422040570752756",
            "value": "材料库房",
            "onlyValue": 1
        }],
        "parentId": "16842203976629393"
    }
}

  • 写回答

2条回答 默认 最新

  • mls学习小记 2023-12-28 18:09
    关注
    1. 实体复制优化(使用MapStruct)

    MapStruct是一个代码生成器,用于生成类型安全的,高性能的Bean映射代码,基于约定优于配置的方法。MapStruct的主要优势是它可以处理大部分源/目标映射逻辑,开发人员只需定义接口,无需实现。

    例如,如果你有两个Java类,Person和PersonDto:

    public class Person {
        private String name;
        private int age;
        // getter and setter ...
    }
    
    public class PersonDto {
        private String name;
        private int age;
        // getter and setter ...
    }
    

    你可以定义一个MapStruct接口:

    @Mapper
    public interface PersonMapper {
        PersonMapper INSTANCE = Mappers.getMapper(PersonMapper.class);
      
        @Mapping(source = "name", target = "name")
        @Mapping(source = "age", target = "age")
        PersonDto personToPersonDto(Person person);
      
        @Mapping(source = "name", target = "name")
        @Mapping(source = "age", target = "age")
        Person personDtoToPerson(PersonDto personDto);
    }
    

    然后,你可以使用PersonMapper.INSTANCE.personToPersonDto(...)方法来转换Person到PersonDto,反之亦然。

    1. JSON 到对象的转换

    您可以使用Jackson库来将JSON字符串转换为Java对象。例如,如果你有一个Person类,你可以这样做:

    public class Person {
        private String name;
        private int age;
        // getter and setter ...
    }
    
    String json = "{\"name\":\"John\",\"age\":30}";
    ObjectMapper mapper = new ObjectMapper();
    Person person = mapper.readValue(json, Person.class);
    

    对于您给出的JSON数据,首先你需要创建一个Java类,其结构与JSON数据相匹配。然后你可以使用Jackson库来进行转换。

    例如,对于您提供的JSON,可以创建以下类:

    public class Record {
        private int onlyValue;
        private String type;
        private String key;
        private boolean isChecked;
        private boolean hasChanged;
        private List<Value> values;
        // getter and setter ...
    }
    
    public class Value {
        private int onlyValue;
        private int value;
        private String key;
        // getter and setter ...
    }
    

    然后,可以使用以下代码进行转换:

    String json = /* your JSON string */;
    ObjectMapper mapper = new ObjectMapper();
    Map<String, Record> records = mapper.readValue(json, new TypeReference<Map<String, Record>>() {});
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 1月16日
  • 已采纳回答 1月8日
  • 创建了问题 12月28日

悬赏问题

  • ¥20 关于线性结构的问题:希望能从头到尾完整地帮我改一下,困扰我很久了
  • ¥20 设计一个二极管稳压值检测电路
  • ¥15 内网办公电脑进行向日葵
  • ¥15 如何输入双曲线的参数a然后画出双曲线?我输入处理函数加上后就没有用了,不知道怎么回事去掉后双曲线可以画出来
  • ¥50 WPF Lidgren.Network.Core2连接问题
  • ¥15 soildworks装配体的尺寸问题
  • ¥100 有偿寻云闪付SDK转URL技术
  • ¥30 基于信创PC发布的QT应用如何跨用户启动后输入中文
  • ¥20 非root手机,如何精准控制手机流量消耗的大小,如20M
  • ¥15 远程安装一下vasp