java - 来自 RESTful 的 Json

标签 java json spring rest

我正在尝试创建 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/

相关文章:

php - 如何在 Jquery 中使用 JSON?

performance - jackson 和 gson 之间的 json 解析性能

java - RestTemplate postForEntity 遇到 java.io.IOException : Premature EOF error

java - 实体集扩展python

java - Android gradle 错误 :(69, 0) Gradle DSL 方法未找到: 'compile()'

java - 如何使用 Apache POI 将超链接添加到 XWPFDocument 的页脚?

javascript - 打开 json 文件时出错

java - 使用 Spring Boot 连接到 MySQL 数据库时遇到问题

java - 对设置@transactional 的值感到困惑

Java - 将文件扫描仪与用户输入扫描仪结合起来