春季:将响应实体转换为JSON



从我的REST客户端中,我正在以字符串{"code":"00000","msg":"Success">的形式击中Web服务并获得响应。现在,我正在以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;
}

而不是转换为通用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(),这将提供您的响应对象,您可以使用

一种形式正在使用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);

相关内容

  • 没有找到相关文章

最新更新