我正在尝试创建 Spring Restful 服务,它应该返回:
{"counts": [{"SearchText1": 11}, {"SearchText2": 16}, {"SearchText3": 8}]}
其中“SearchText1”是要在文档中搜索的文本,11 是重复次数。
我一直在尝试将此 Json 建模为 java 类来返回,以便可以将其序列化为 Json,但还没有成功!
public class CountResultWrapper {
List<CountResult> counts = new ArrayList<CountResult>();
public List<CountResult> getCounts() {
return counts;
}
public void setCounts(List<CountResult> counts) {
this.counts = counts;
}
}
public class CountResult {
String searchText;
Integer count;
public CountResult(String searchText,Integer count)
{
this.searchText = searchText;
this.count = count;
}
public String getSearchText() {
return searchText;
}
public void setSearchText(String searchText) {
this.searchText = searchText;
}
public Integer getCount() {
return count;
}
public void setCount(Integer count) {
this.count = count;
}
}
但我明白了:
{"counts":[{"searchText":"searchText1","count":11},{"searchText":"searchText2","count":8},{"searchText":"searchText3","count":7}]}
有人可以帮我吗?
最佳答案
由于字段名称是动态的,因此无法使用模型类直接实现 - 因为您不能为每个搜索文本记录添加新字段。
但是,可以使用下面的方法来实现 - 对于大容量来说可能成本较高,但它会返回预期的输出
List<HashMap<String, Integer>> counts = new ArrayList<>();
counts.add(new HashMap<String, Integer>() {{put("SearchText1",11);}});
counts.add(new HashMap<String, Integer>() {{put("SearchText2",11);}});
JSONObject output = new JSONObject();
output.put("counts",counts);
System.out.println(output.toString());
输出:
{ "counts": [{ "SearchText1": 11 }, { "SearchText2": 16 }, { "SearchText3": 8 }] }
关于java - 来自 RESTful 的 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41710263/