2013-04-29 4 views
0

호텔 API에서 json 웹 응답을받는 간단한 Spring Web MVC 응용 프로그램을 만들었지 만 루트 노드에서 findPath() 메서드를 사용하려고 할 때 I 오류가 발생합니다. json 파싱을 위해 Jackson Library를 사용하고 있습니다.Json 웹 응답에서 Json 노드를 가져 오는 중 오류가 발생했습니다.

ObjectMapper m = new ObjectMapper(); 
JsonNode rootNode = m.readTree(in); 
JsonNode hotelNameNode = rootNode.findPath("HotelList"); 
String hotelName = hotelNameNode.path("name").getTextValue(); 

제 3 라인이 오류가 발생합니다 : 다음은 코드입니다.

{ 
    "HotelListResponse": { 
     "cachedSupplierResponse": { 
      "@cachedTime": "0", 
      "@candidatePreptime": "111", 
      "@matchedCurrency": "true", 
      "@matchedLocale": "true", 
      "@otherOverheadTime": "4", 
      "@supplierRequestNum": "211", 
      "@supplierResponseNum": "20", 
      "@supplierResponseTime": "405", 
      "@tpidUsed": "5001" 
     }, 
     "cacheKey": "302c317:13443ffb599:-7712", 
     "cacheLocation": "10.186.168.61:7302", 
     "customerSessionId": "0ABAA83D-2C31-7913-4432-FFB599907714", 
     "HotelList": { 
      "@activePropertyCount": "237", 
      "@size": "1", 
      "HotelSummary": { 
       "@ubsScore": "1867", 
       "@order": "0", 
       "hotelId": 127092, 
       "name": "The Edgewater - A Noble House Hotel", 
       "address1": "Pier 67, 2411 Alaskan Way", 
       "city": "Seattle", 
       "stateProvinceCode": "WA", 
       "postalCode": 98121, 
       "countryCode": "US", 
       "airportCode": "SEA", 
       "supplierType": "E", 
       "propertyCategory": 1, 
       "hotelRating": 4, 
       "confidenceRating": 85, 
       "amenityMask": 6259019, 
       "tripAdvisorRating": 4, 
       "tripAdvisorReviewCount": 590, 
       "tripAdvisorRatingUrl": "http://www.tripadvisor.com/img/cdsi/img2/ratings/traveler/4.0-12345-4.gif", 
       "locationDescription": "Near Washington State Convention & Trade Center", 
       "shortDescription": "<p><b>Location. </b> <br />The Edgewater - A Noble House Hotel is a business-friendly hotel located in central Seattle, close to Odyssey - The Maritime Discovery Center, Washington State Convention &", 
       "highRate": 249, 
       "lowRate": 186.75, 
       "rateCurrencyCode": "USD", 
       "latitude": 47.61252, 
       "longitude": -122.35013, 
       "proximityDistance": 11.898841, 
       "proximityUnit": "MI", 
       "hotelInDestination": true, 
       "thumbNailUrl": "/hotels/1000000/20000/11200/11133/11133_73_t.jpg", 
       "deepLink": "http://travel.ian.com/index.jsp?pageName=hotAvail&cid=55505&hotelID=127092&mode=2&numberOfRooms=2&room-0-adult-total=1&room-0-child-total=1&room-0-child-0-age=3&room-1-adult-total=1&room-1-child-total=1&room-1-child-0-age=5&arrivalMonth=8&arrivalDay=4&departureMonth=8&departureDay=5&showInfo=true&locale=en_US&currencyCode=USD", 
       "RoomRateDetailsList": { 
        "RoomRateDetails": { 
         "roomTypeCode": 1160, 
         "rateCode": 1221260, 
         "maxRoomOccupancy": 2, 
         "quotedRoomOccupancy": 2, 
         "minGuestAge": 0, 
         "roomDescription": "City Lodge - Nonrefundable", 
         "promoId": 200803780, 
         "promoDescription": "7-Day Advance Purchase Special (Nonrefundable)", 
         "currentAllotment": 10, 
         "propertyAvailable": true, 
         "propertyRestricted": false, 
         "expediaPropertyId": 11133, 
         "rateKey": "f3525aff-9f4d-4d92-bc1c-144628fcaa30", 
         "nonRefundable": true, 
         "RateInfos": { 
          "@size": "1", 
          "RateInfo": { 
           "@rateChange": "false", 
           "@promo": "true", 
           "@priceBreakdown": "true", 
           "RoomGroup": { 
            "Room": [ 
             { 
              "numberOfAdults": 1, 
              "numberOfChildren": 1, 
              "childAges": 3 
             }, 
             { 
              "numberOfAdults": 1, 
              "numberOfChildren": 1, 
              "childAges": 5 
             } 
            ] 
           }, 
           "ChargeableRateInfo": { 
            "@commissionableUsdTotal": "373.5", 
            "@total": "441.74", 
            "@surchargeTotal": "68.24", 
            "@nightlyRateTotal": "373.5", 
            "@averageBaseRate": "249.0", 
            "@averageRate": "186.75", 
            "@maxNightlyRate": "186.75", 
            "@currencyCode": "USD", 
            "NightlyRatesPerRoom": { 
             "@size": "1", 
             "NightlyRate": { 
              "@promo": "true", 
              "@rate": "186.75", 
              "@baseRate": "249.0" 
             } 
            }, 
            "Surcharges": { 
             "@size": "1", 
             "Surcharge": { 
              "@amount": "68.24", 
              "@type": "TaxAndServiceFee" 
             } 
            } 
           } 
          } 
         } 
        } 
       } 
      } 
     } 
    } 
} 

오류 메시지 :

HTTP Status 500 - Handler processing failed; nested exception is java.lang.NoSuchMethodError: org.codehaus.jackson.JsonNode.findPath(Ljava/lang/String;)Lorg/codehaus/jackson/JsonNode;

메이븐 의존성 :

<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-core-lgpl</artifactId> 
    <version>1.9.12</version> 
</dependency> 
<dependency> 
<groupId>org.codehaus.jackson</groupId> 
<artifactId>jackson-mapper-asl</artifactId> 
<version>1.5.0</version> 
</dependency> 
+0

어떤 오류 ????? – NINCOMPOOP

+0

런타임시 컴파일 타임에 같은 버전의 Jackon을 사용하고 있습니까? – tbsalling

+0

원본 게시물에 사용한 종속성을 추가했습니다. – skiabox

답변

1

당신은 jackson-mapper-asl를 업데이트 할 필요가있을 수 있습니다, 그것은 최대의 여기

그리고

내가 가진 웹 응답이다 버전 1.9.9 ( see MVNRepository) :

<dependency> 
    <groupId>org.codehaus.jackson</groupId> 
    <artifactId>jackson-mapper-asl</artifactId> 
    <version>1.9.9</version> 
</dependency> 
+0

아니요. 아주 오래된 문서를보고 계십니다. http://jackson.codehaus.org/1.8.8/javadoc/org/codehaus/jackson/JsonNode.html#findPath(java.lang.String) – tbsalling

+0

버전 1.9.9가 작동했습니다. 대단히 감사합니다! – skiabox

관련 문제