2016-07-18 2 views
0

Webサービスの応答を解析しようとしていますが、コードで 'NullPointerException'がスローされます。 XmlRootElementアノテーションをRestaurantクラスに追加しましたが、同じ例外がスローされました。JAXBを使用してxml応答を解析できません - NullPointerExceptionがスローされます

応答は次のようになり

<RestaurantList> 
<Restaurant id="100001"> 
    <Url>URL is here</Url> 
    <Name>Agaton</Name> 
    <Description> 
     <Text> Text is here</Text> 
    </Description> 
    <Image> 
     <Code>111772</Code> 
     <Name>MAINCOURSE</Name> 
     <Description><Text>Main course Agaton</Text></Description> 
     <Url>http://img.static- 
        bookatable.com/17862a2d1fa13f5fb083a4d78d6f7e42.jpg</Url> 
    </Image> 
    <Image> 
     <Code>111773</Code> 
     <Name>MAINCOURSE</Name> 
     <Url>http://img.static- 
      bookatable.com/8fae3334490c276322ac1a597fc2d456.jpg</Url> 
    </Image> 
    <PrimaryCuisine>Italian</PrimaryCuisine> 
    <Address> 
     <Line1>Västerlånggatan 72</Line1> 
     <Line2/> 
     <Line3/> 
     <PostalCode>111 29</PostalCode> 
     <City>Stockholm</City> 
     <Country>SWE</Country> 
    </Address> 
    <Geo> 
     <Latitude>59.32299</Latitude> 
     <Longtitude>18.07205</Longtitude> 
    </Geo> 
    <Region></Region> 
    <Detail> 
     <Homepage>http://www.restaurangagaton.se</Homepage> 
     <EMail>[email protected]</EMail> 
     <PhoneNumber type="Main">+46 8207299</PhoneNumber> 
     <PhoneNumber type="Fax">+46 8207107</PhoneNumber> 
     <Styles> 
     <Style> 
     <Text>Neighbourhood Restaurant</Text> 
     </Style> 
     </Styles> 
     <OpenHours>Sunday-Thursday 11.00-22.00 Friday-Saturday 11.00 
     23.00</OpenHours> 
     <AveragePriceThreeCourseMeal 
     currency="SEK">550</AveragePriceThreeCourseMeal> 
     <AveragePriceMainCourse currency="SEK">223</AveragePriceMainCourse> 
    </Detail> 
    </Restaurant> 
    <Restaurant id="100005"><Url> 

コード

 RestTemplate restTemplate = new RestTemplate(); 
     RestaurantList response = restTemplate.getForObject(url, RestaurantList.class); 
     System.err.println("size>>" + response.getRestaurants().size()); //Exception 

私はすべてのgetterとsetter

RestaurnatList

を持っています

レストラン

@XmlAccessorType(XmlAccessType.FIELD) 
public class Restaurant{ 
    @XmlAttribute 
    private long id; 
    @XmlElement 
    private String url; 
    @XmlElement 
    private String name; 
    @XmlElement 
    private Description description; 
    @XmlElement 
    private List<Image> image; 
    @XmlElement 
    private String primaryCuisine; 
    @XmlElement(name = "address") 
    private Address address; 
    @XmlElement 
    private Geo geo; 
    @XmlElement 
    private Region region; 
    @XmlElement 
    private Detail detail; 

説明

@XmlAccessorType(XmlAccessType.FIELD) 
public class Description { 
    @XmlElement(name="text") 
    private String text; 

画像

@XmlAccessorType(XmlAccessType.FIELD) 
public class Image { 
    @XmlElement 
    private long code; 
    @XmlElement 
    private String name; 
    @XmlElement 
    private Description description; 
    @XmlElement 
    private String url; 

住所

@XmlAccessorType(XmlAccessType.FIELD) 
public class Address { 
    @XmlElement 
    private String line1; 
    @XmlElement 
    private String line2; 
    @XmlElement 
    private String line3; 
    @XmlElement 
    private String postalCode; 
    @XmlElement 
    private String city; 
    @XmlElement 
    private String country; 

ジオ

@XmlAccessorType(XmlAccessType.FIELD) 
public class Geo { 
    @XmlElement 
    private double latitude; 
    @XmlElement 
    private double longtitude; 

リージョン

@XmlAccessorType(XmlAccessType.FIELD) 
public class Region { 
    @XmlElement 
    private long code; 

詳細

@XmlAccessorType(XmlAccessType.FIELD) 
public class Detail { 
    @XmlElement 
    private String homepage; 
    @XmlElement 
    private String email; 
    @XmlElement 
    private String phoneNumber1; 
    @XmlElement 
    private String phoneNumber2; 
    @XmlElement 
    private Styles style; 
    @XmlElement 
    private String openHours; 
    @XmlElement 
    private double averagePriceThreeCourseMeal; 
    @XmlElement 
    private double averagePriceMainCourseMeal; 

答えて

0

@XmlElement(name = "restaurant")@XmlElement(name = "Restaurant")と変更して、RestaurantListクラスに変更してください。それは動作するはずです

関連する問題