【问题标题】:Spring : Convert Response Entity to JSONSpring:将响应实体转换为 JSON
【发布时间】:2018-02-22 11:03:54
【问题描述】:

从我的其他客户端,我正在访问一个 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;
}

【问题讨论】:

    标签: arrays json spring rest web-services


    【解决方案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 对象,您可以使用它

    【讨论】:

    • 这让我很生气。 GetforObject 可以自动解组到对象。我是不是在船上,我现在必须用杰克逊手动解析它?
    【解决方案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);

    【讨论】:

    • 但是如何将 responseentity 转换为 json?
    猜你喜欢
    • 2019-05-17
    • 2023-02-15
    • 1970-01-01
    • 2021-09-04
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多