从我的其他客户端,我正在点击一个Web服务,并以字符串{"code":"00000","msg":"Success">
的形式获得我的回复。现在我以JSONObject的形式转换它,然后我可以进一步使用它。但我无法做到。以下是我正在使用的代码。请指导。
private ResponseEntity<String> test()
{
final String uri = "URL";
RestTemplate restTemplate = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList(MediaType.APPLICATION_JSON));
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity<String> entity = new HttpEntity<String>("parameters", headers);
ResponseEntity<String> result = restTemplate.exchange(uri, HttpMethod.GET, entity, String.class);
System.out.println(result);
//This part is not working.
try {
JSONObject arr = new JSONObject((result));
for (int i = 0; i < arr.length(); i++) {
JSONObject abc = arr.getJSONObject(i);
System.out.println("test1 : " + abc.getString("test1"));
System.out.println("test2 : " + abc.getString("test2"));
System.out.println("test3 : " + abc.getString("test3"));
}
} catch (Exception e) {
}
return result;
}
答案 0 :(得分:1)
您应该创建一个与您的响应匹配的类,而不是转换为通用的JSONObject Spring将使用Jackson(幕后)将响应映射到您的模型类。没有必要自己转换它。
所以我们说,你创建了一个类
class Response {
String code;
String message:
//Gettes and Setters
}
现在您可以像这样更改代码
ResponseEntity<Response> result = restTemplate.exchange(uri, HttpMethod.GET, entity, Response.class);
现在,如果你使用result.getBody()
,这将给你的Response对象,你可以使用
答案 1 :(得分:-2)
一种形式是使用JSONObject
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1</version>
<scope>${scope}</scope>
</dependency>
import org.json.simple.JSONObject;
JSONObject json = new JSONObject();
json.put("key1", value1);
json.put("key2", value2);