我无法直接获取JSONObject,此代码有效:
RestTemplate restTemplate = new RestTemplate(); String str = restTemplate.getForObject("http://127.0.0.1:8888/books", String.class); JSONObject bookList = new JSONObject(str);
但是这段代码没有:
JSONObject bookList = restTemplate.getForObject("http://127.0.0.1:8888/books", JSONObject.class);
可能是什么问题呢?它没有给出错误,但最后我有一个空的JSONObject.
我的pom.xml:
4.0.0 com.example library-client 0.0.1-SNAPSHOT jar LibraryClient Demo project for Spring Boot org.springframework.boot spring-boot-starter-parent 1.4.3.RELEASE UTF-8 UTF-8 1.8 org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test com.fasterxml.jackson.core jackson-databind org.json json org.springframework.boot spring-boot-maven-plugin
当我使用字符串在其中工作时,我必须添加更多细节.还有一些细节,也许我应该删除我的pom.xml以减少这个问题中的代码量,这有意义吗?| 还好吗?
RestTemplate将使用反射来创建结果对象
当你使用restTemplate.getForObject
它时会尝试使用你传递的类的默认构造函数然后尝试填充它的所有字段在这种情况下它不知道如何创建JSONObject
为了做到这一点,你必须:
用你自己的 HttpMessageConverterExtractor
使用第二种方法 JSONObject bookList = new
JSONObject(str);