2

如何指定 SolrQuery 以 json 格式返回数据?下面是我用来查询数据的代码:一旦我得到 SolrDocument,我如何将它转换为 json 对象/字符串?

 SolrQuery sQuery = new SolrQuery();
 sQuery.setQuery("name:test");
 QueryResponse resp = server.query(sQuery);
 SolrDocumentList docs = resp.getResults();
4

3 回答 3

17

从 solrj 导入 JSONUtil 类,它具有 solr 文档的 json 转换器,或者如果您看到该类的代码,您可以轻松编写一个:

import org.apache.noggit.JSONUtil;

SolrQuery sQuery = new SolrQuery();
sQuery.setQuery("name:test");
QueryResponse resp = server.query(sQuery);
SolrDocumentList docs = resp.getResults();
String returnValue = JSONUtil.toJSON(docs); //this has the json documents
于 2013-03-04T18:27:00.063 回答
3

SolrJ 旨在将文档检索/转换为您定义的 POJO。如果要将文档转换为 JSON,则需要使用Jackson之类的库将 SolrDocument 转换为 JSON。

不确定这是否适合您,但想提一下,您可能会考虑从已格式化为 JSON 的 Solr 获取响应。有关更多详细信息,请参阅SolJSON。在这种情况下,您不需要使用 SolrJ。最简单的方法是使用直接的 http 调用(通过 java http 客户端库)并使用 SolJSON 技术从 Solr 获取 JSON 响应。

于 2012-10-22T12:47:50.530 回答
0

您也可以使用GSON来完成。

SolrDocumentList SolrResponse = searchWithSolr();
Gson gson = new Gson();
if (SolrResponse.size()!=0) {
  System.out.println(gson.toJson(SolrResponse));
  interpolMap.put("interpol", gson.toJson(InterpolSolrResponse));
}

于 2017-06-15T04:20:55.047 回答