簡體   English   中英

無法使用JAXB解析xml響應-引發NullPointerException

[英]Cannot parse a xml response using JAXB - NullPointerException is thrown

我正在嘗試解析Web服務的響應,但是代碼拋出“ NullPointerException”。 我將XmlRootElement批注添加到Restaurant類,但是引發了相同的異常。

響應類似於以下

<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>kontakt@restaurangagaton.se</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

餐廳列表

@XmlRootElement(name = "RestaurantList")
@XmlAccessorType(XmlAccessType.FIELD)
public class RestaurantList {
    @XmlElement(name = "restaurant")
    private List<Restaurant> restaurants;

餐廳

@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;

嘗試在RestaurantList類中使用@XmlElement(name = "Restaurant")更改@XmlElement(name = "restaurant") 它應該工作

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM