我正在尝试返回从请求的查询中创建的Json。
例如:
url.com?field1=value1&field2=value2&field1=value3
- 应返回:
"queryString": {
"field1": [
"value1",
"value3"
],
"field2": "value2"
}
- 但我有的是:
"queryString": {
"field1": [
"value1",
"value3"
],
"field2": [
"value2"
]
}
对于field2,我希望其值为**“value2”,而不是数组[“value2”]**。
代码为:
@JsonGetter("queryString")
public MultiValueMap<String, String> getQueryString() {
String queryString = Optional.ofNullable(httpRequest.getQueryString()).orElse("");
// queryString is for our example : field1=value1&field2=value2&field1=value3
return UriComponentsBuilder.fromUriString("?" + queryString).build().getQueryParams();
}
我应该使用不同的集合吗?哪一个?
- 精度:我不知道字段应该是什么类型,它可以是
String
或List<String>
。
1条答案
按热度按时间toe950271#
根据定义,
MultiValueMap
存储一个键和一个值列表,因此序列化看起来像{"key":["value1", "value2"]}
是有意义的。假设这是您想要做的,这里有几种方法可以做到这一点:
1.在我看来,您应该知道
field1
和field2
的类型,这样您就可以定义一个类来很好地捕获这些信息:1.一个快速而简单的解决方案是简单地将
MultiValueMap<String, String>
转换为Map<String, Object>
,这将获得您想要的序列化(基于MultiValueMapAdapter.toSingleValueMap()
:1.根据您使用它的方式,您还可以定义custom serializer。
请注意,在这些示例中,您可能需要处理一些额外的边缘情况,如空值和空列表。