我的restful API方法看起来像这样
@GET
@Produces(MediaType.APPLICATION_JSON)
public JSONArray getMessage()
{
FreeDriversService f=new FreeDriversService();
try {
return f.executeFreeDrivers(); // this method return a JSONArray
}
catch(Exception e) {
System.out.println(e.toString());
return new JSONArray();
}
}
当我在toString()
上使用JSONArray
方法时,它会生成结果,但我希望JSON
作为输出。我怎么能这样做?
我收到此错误
A message body writer for Java class org.json.JSONArray, and Java type class org.json.JSONArray, and MIME media type application/json
was not found
答案 0 :(得分:1)
问题摘要: -
您在JSON
注释中将@Produces
的输出称为@Produces(MediaType.APPLICATION_JSON)
,但您的方法JSONObject
不是发送getMessage
而是返回JSONArray
}。
您无法简单地将JSON
转换为JSONArray
,因为在JSONArray
中JSONObject
相同类型的keys
可以使用相同的values
重复多次,这可以是JSONObject
由多个JSONObject
的后期JSONArray
替换。
解决方案: -
您可以创建value
,并将key
作为 @GET
@Produces(MediaType.APPLICATION_JSON)
public Response getMessage(){
JSONObject finalJson = new JSONObject ();
JSONArray inputArray = new JSONArray();
FreeDriversService f=new FreeDriversService();
try{
inputArray = f.executeFreeDrivers(); // this method return a JSONArray
}catch(Exception e){
System.out.println(e.toString());
}
finalJson.put("array",inputArray );
return Response.status(200).entity(finalJson).build();
}
放入其中,用于定义用户{{1}}。
{{1}}