Java 未找到类型为org.json.JSONObject的返回值的转换器
我正在编写SpringBootREST服务,以便根据_id(来自弹性搜索)从弹性搜索中获取产品。我能够打印来自服务的响应,这意味着服务能够获取响应,但在转换为JSONObject以返回到UI时会出现错误Java 未找到类型为org.json.JSONObject的返回值的转换器,java,rest,spring-boot,
elasticsearch,Java,Rest,Spring Boot,
elasticsearch,我正在编写SpringBootREST服务,以便根据_id(来自弹性搜索)从弹性搜索中获取产品。我能够打印来自服务的响应,这意味着服务能够获取响应,但在转换为JSONObject以返回到UI时会出现错误 未找到类型为class org.json.JSONObject的返回值的转换器 请在下面找到我的代码 public JSONObject getProductById(String id){ String[] includes = new String[]{id}; Strin
未找到类型为class org.json.JSONObject的返回值的转换器
请在下面找到我的代码
public JSONObject getProductById(String id){
String[] includes = new String[]{id};
String[] excludes = Strings.EMPTY_ARRAY;
GetRequest getRequest = new GetRequest(INDEX, TYPE, SOURCE);
getRequest.routing(id);
GetResponse getResponse = null;
try {
getResponse = restHighLevelClient.get(getRequest);
} catch (java.io.IOException e){
e.getLocalizedMessage();
}
//GetResponse getResponse = null;
// create the search request
SearchRequest searchRequest = new SearchRequest(INDEX);
searchRequest.types(TYPE);
// create the match query on the author field
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
MatchQueryBuilder matchQueryBuilder = new MatchQueryBuilder("_id", id);
searchSourceBuilder.query(matchQueryBuilder);
searchRequest.source(searchSourceBuilder);
// send the request
SearchResponse searchResponse = null;
try {
searchResponse = restHighLevelClient.search(searchRequest);
logger.info("response ---->"+searchResponse);
} catch (IOException e) {
e.getLocalizedMessage();
}
// read the response
String productName = null;
Product product = null;
SearchHit[] searchHits = searchResponse.getHits().getHits();
for (SearchHit hit : searchHits) {
// get each hit as a Map
Map<String, Object> sourceAsMap = hit.getSourceAsMap();
product=new Product();
product.setName(sourceAsMap.get("name").toString());
/*productName = (String) sourceAsMap.get("name");*/
}
Gson gson=new Gson();
JSONObject productJSON = null;
String prodStr=gson.toJson(product);
try {
productJSON=new JSONObject(prodStr);
} catch (JSONException e) {
e.printStackTrace();
}
return productJSON;
}
公共JSONObject getProductById(字符串id){
字符串[]包含=新字符串[]{id};
String[]排除=Strings.EMPTY_数组;
GetRequest GetRequest=新的GetRequest(索引、类型、源);
getRequest.routing(id);
GetResponse GetResponse=null;
试一试{
getResponse=restHighLevelClient.get(getRequest);
}捕获(java.io.ioe异常){
e、 getLocalizedMessage();
}
//GetResponse GetResponse=null;
//创建搜索请求
SearchRequest SearchRequest=新的SearchRequest(索引);
searchRequest.types(TYPE);
//在“作者”字段上创建匹配查询
SearchSourceBuilder SearchSourceBuilder=新的SearchSourceBuilder();
MatchQueryBuilder MatchQueryBuilder=新的MatchQueryBuilder(“\u id”,id);
searchSourceBuilder.query(matchQueryBuilder);
searchRequest.source(searchSourceBuilder);
//发送请求
SearchResponse SearchResponse=null;
试一试{
searchResponse=restHighLevelClient.search(searchRequest);
logger.info(“响应-->”+搜索响应);
}捕获(IOE异常){
e、 getLocalizedMessage();
}
//阅读回复
字符串productName=null;
Product=null;
SearchHit[]searchHits=searchResponse.getHits().getHits();
for(SearchHit:searchHits){
//以地图的形式获得每一次命中
Map sourceAsMap=hit.getSourceAsMap();
产品=新产品();
product.setName(sourceAsMap.get(“name”).toString();
/*productName=(字符串)sourceAsMap.get(“名称”)*/
}
Gson Gson=新的Gson();
JSONObject productJSON=null;
字符串prodStr=gson.toJson(产品);
试一试{
productJSON=新的JSONObject(prodStr);
}捕获(JSONException e){
e、 printStackTrace();
}
返回产品JSON;
}
您不需要将产品转换为JSONObject,因为Spring Boot会自动进行序列化。只需将方法返回类型更改为
Product
,并直接返回Product
示例和指南:Supery。。。!。,我不知道这个。。。谢谢你。