如何指定SolrQuery以json格式返回数据? 下面是我用来查询数据的代码:一旦我得到SolrDocument,我怎样才能将它转换为json对象/字符串?
SolrQuery sQuery = new SolrQuery();
sQuery.setQuery("name:test");
QueryResponse resp = server.query(sQuery);
SolrDocumentList docs = resp.getResults();
答案 0 :(得分:16)
从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
答案 1 :(得分:3)
SolrJ旨在检索/转换文档作为您定义的POJO。如果要将文档转换为JSON,则需要使用Jackson之类的库来执行从SolrDocument到JSON的转换。
不确定这是否适合您,但想提一下,您可能会考虑将Solr的响应格式化为JSON。有关详细信息,请参阅SolJSON。在这种情况下,您不需要使用SolrJ。最简单的方法是使用直接的http调用(通过java http客户端库)并使用SolJSON技术从Solr获取JSON响应。
答案 2 :(得分: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));
}