文章目录
- 前言
- 如果通过Map转换成指定的class类
- 1. 依赖
- 2. 前期准备
- 3. 测试
前言
如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!
如果通过Map转换成指定的class类
主要使用ObjectMapper类中的方法
1. 依赖
只要安装springBoot的web依赖即可:
2. 前期准备
要转换的class类:
@Data
class JsonA implements Serializable {private static final long serialVersionUID = 3405588158578870522L;@JsonProperty("id")private String a;private String b;private BigDecimal bd;@JsonProperty("intType")private Integer cc;
}
@JsonProperty注解的作用:
把属性的名称序列化另一个名称,属性名称和@JsonProperty(“”)里面的名称是映射关系。
3. 测试
@RunWith(SpringRunner.class)
@SpringBootTest(classes = ThymeleafDemo.class)
@Slf4j
@Data
public class JsonTest {@AutowiredObjectMapper objectMapper;@Testpublic void test_1() throws JsonProcessingException {Map<String,Object> map = Maps.newHashMap();map.put("a","213");map.put("b","123");map.put("bd","34");map.put("cc",45);String json = objectMapper.writeValueAsString(map);log.info("MAP:{}",json);JsonA jsonA = objectMapper.readValue(json, JsonA.class);log.info("JsonA:{}",JSON.toJSONString(jsonA));}}
2023-05-29 17:29:12.599 INFO 28388 --- [ main] com.yzy.controller.JsonTest : MAP:{"cc":45,"a":"213","b":"123","bd":"34"}
2023-05-29 17:29:13.022 INFO 28388 --- [ main] com.yzy.controller.JsonTest : JsonA:{"b":"123","bd":34}
因为a和cc被@JsonProperty注解把属性的名称序列化成另一个名称,因此转成JsonA 类的时候,两个对象失败。
/*** @author yangzhenyu* @version 1.0* @description:* @date 2023/5/29 15:02*/
@RunWith(SpringRunner.class)
@SpringBootTest(classes = ThymeleafDemo.class)
@Slf4j
@Data
public class JsonTest {@AutowiredObjectMapper objectMapper;@Testpublic void test_2() throws JsonProcessingException {Map<String,Object> map = Maps.newHashMap();map.put("id","213");map.put("b","123");map.put("bd","34");map.put("intType",45);String json = objectMapper.writeValueAsString(map);log.info("MAP:{}",json);JsonA jsonA = objectMapper.readValue(json, JsonA.class);log.info("JsonA:{}",JSON.toJSONString(jsonA));}
}
执行结果:
2023-05-29 17:33:01.440 INFO 37620 --- [ main] com.yzy.controller.JsonTest : MAP:{"b":"123","bd":"34","intType":45,"id":"213"}
2023-05-29 17:33:01.771 INFO 37620 --- [ main] com.yzy.controller.JsonTest : JsonA:{"a":"213","b":"123","bd":34,"cc":45}
只要把map的key值跟@JsonProperty注解上的值一致即可成功转换。