当我从@RestControler返回对象时,如何在json中保持地图键顺序 [英] How to keep map key order in json when I return object from @RestControler

查看:91
本文介绍了当我从@RestControler返回对象时,如何在json中保持地图键顺序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想保持地图条目的顺序,因此我在上下文中添加了以下bean:

I want to keep map entries order thus I've added following bean into context:

@Bean
public ObjectMapper objectMapper() {
    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true);
    return objectMapper;
}

我还有以下控制器:

@Autowired
private ObjectMapper objectMapper;
@GetMapping(value = "/mapping", produces = "application/json")
public ResponseEntity<MappingDTO> getMapping(HttpServletRequest request) {
    MappingDTO mappingDTO = mappingService.getMapping();
    String str = objectMapper.writeValueAsString(mappingDTO); // added this line for test perpose
    return ResponseEntity.ok(mappingDTO);
}

dto:

public class MappingDTO {
    private String id;
    private Map<String, List<MappingEntry>> entries;
    ...

str变量包含正确顺序的正确json,但是当我执行Get请求时-顺序被破坏了.

str variable contains correct json with correct order but when I execute Get request - order is broken.

如何解决此问题?

推荐答案

假设您希望按字典顺序对键进行排序,请添加

Assuming you want keys sorted lexicographically, add

spring.jackson.serialization.order-map-entries-by-keys=true

application.properties文件.

这篇关于当我从@RestControler返回对象时,如何在json中保持地图键顺序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆