文章目录
- 前言
- 如果通过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 {
@Autowired
ObjectMapper objectMapper;
@Test
public 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 {
@Autowired
ObjectMapper objectMapper;
@Test
public 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注解上的值一致即可成功转换。