[英]A map of <String, Object> to JSONString
ObjectMapper mapper = new ObjectMapper();
searchCriteria.put(TICKET_STATUS_LIST,
mapper.writeValueAsString(ticketStatus));
String ticketListJson = mapper.writeValueAsString(tkmTicketList);
String searchCrteriaJson = mapper
.writeValueAsString(searchCriteria);
Map<String, Object> ticketSearchResult = new HashMap<String, Object>();
ticketSearchResult.put("ticketListJson", ticketListJson);
ticketSearchResult.put("searchCriteriaJson", searchCrteriaJson);
ticketSearchResult.put("count", iResultCt);
return mapper.writeValueAsString(ticketSearchResult);
我遇到了这个令人愉快的代码,问题是搜索条件和 ticketListJson 最终被视为字符串,所以我得到了一个糟糕的 json:
{"count":7,"searchCriteriaJson":"{\"startRecord\":0,\"sortOrder\":\"DESC\",\"ticketStatus\":\"[\\\"Any\\\"]\",\"pageSize\":10,\"sortBy\":\"Default\",\"customer\":1599}","ticketListJson":"[{\"id\":\"30\",\"subject\":\"Test\",\"number\":\"TIC-30\",...
我怎样才能让这些内部 json 字符串保持它们的正常值而不添加一堆转义字符。
只需将searchCriteria
和tkmTicketList
对象直接放入ticketSearchResult
map 中,而不是多次通过writeValueAsString
方法。 Jackson 将遍历 Map 并序列化它遇到的对象。
如果你需要对那些其他对象的序列化做一些更复杂的事情,你可以这样做:(我先写了,然后意识到这对你需要的东西来说太过分了)
将searchCriteria
和tkmTicketList
转换为 JSON 树节点而不是字符串,然后它们将包含在搜索结果 JSON 中而不是重新转义为字符串:
JsonNode searchCriteriaJson = mapper.convertValue(searchCriteria, JsonNode.class)
不要多次调用writeValueAsString()
。 ticketStatus
、 tkmTicketList
和searchCriteria
直接插入到地图中。
ObjectMapper mapper = new ObjectMapper();
searchCriteria.put(TICKET_STATUS_LIST, ticketStatus);
Map<String, Object> ticketSearchResult = new HashMap<String, Object>();
ticketSearchResult.put("ticketListJson", tkmTicketList);
ticketSearchResult.put("searchCriteriaJson", searchCriteria);
ticketSearchResult.put("count", iResultCt);
return mapper.writeValueAsString(ticketSearchResult);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.