2017-01-25 15 views
5
को नहीं लाया जा सकता है

मैं JSONObject सीधे को नहीं लाया जा सकता है, इस कोड काम करता है:RestTemplate 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:

<?xml version="1.0" encoding="UTF-8"?> 
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> 
    <modelVersion>4.0.0</modelVersion> 

    <groupId>com.example</groupId> 
    <artifactId>library-client</artifactId> 
    <version>0.0.1-SNAPSHOT</version> 
    <packaging>jar</packaging> 

    <name>LibraryClient</name> 
    <description>Demo project for Spring Boot</description> 

    <parent> 
     <groupId>org.springframework.boot</groupId> 
     <artifactId>spring-boot-starter-parent</artifactId> 
     <version>1.4.3.RELEASE</version> 
     <relativePath/> <!-- lookup parent from repository --> 
    </parent> 

    <properties> 
     <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> 
     <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> 
     <java.version>1.8</java.version> 
    </properties> 

    <dependencies> 
     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-web</artifactId> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.boot</groupId> 
      <artifactId>spring-boot-starter-test</artifactId> 
      <scope>test</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-databind</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.json</groupId> 
      <artifactId>json</artifactId> 
     </dependency> 
    </dependencies> 

    <build> 
     <plugins> 
      <plugin> 
       <groupId>org.springframework.boot</groupId> 
       <artifactId>spring-boot-maven-plugin</artifactId> 
      </plugin> 
     </plugins> 
    </build> 


</project> 

और मैं थोड़ा और अधिक विवरण जब मैं एक स्ट्रिंग का उपयोग कास्ट करने के लिए inbetween यह काम करता है कि आप देख सकते जोड़ने के लिए। और थोड़ा और विवरण, शायद मुझे इस प्रश्न में कोड की मात्रा को कम करने के लिए मेरे pom.xml को हटाना चाहिए, क्या यह समझ में आएगा? | ठीक है और?

+0

का उपयोग आप एक वस्तु है कि एक JSON स्वरूपित स्रोत उम्मीद का उपयोग कर एक एक्सएमएल फ़ाइल पढ़ने का प्रयास कर रहे हैं? – xpereta

उत्तर

5

RestTemplate और व्यवस्था जब आप restTemplate.getForObject का उपयोग यह वर्ग आप पारित के डिफ़ॉल्ट निर्माता का उपयोग करने की कोशिश करेंगे जिसके परिणामस्वरूप वस्तु

बनाने के लिए प्रतिबिंब का उपयोग करेगा तो इस मामले में ऐसा नहीं है अपने सभी क्षेत्रों भरने की कोशिश करता है 'टी पता JSONObject

बनाने का तरीका आदेश में यह करने के लिए आपको:

  • का उपयोग अपने स्वयं के HttpMessageConverterExtractor
  • दूसरा दृष्टिकोण JSONObject bookList = new JSONObject(str);