如何使用jackson库从JSON字符串获取值?

编程入门 行业动态 更新时间:2024-10-26 00:24:33
本文介绍了如何使用jackson库从JSON字符串获取值?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述

我试图从JSON字符串中获取一个值,但我却获取了一个空值.

I am trying to get a value from a JSON string but I am getting a null value instead.

App2.java:

App2.java :

package JsonExample1; import org.codehaus.jackson.JsonNode; import org.codehaus.jackson.map.ObjectMapper; import java.io.IOException; import java.io.StringReader; public class App2 { private JsonNode rootNode; public void setup() throws IOException { String jsonString = "{\n" + " \"HotelListResponse\" : {\n" + " \"customerSessionId\" : \"0ABAAA7A-90C9-7491-3FF2-7E2C37496CA2\",\n" + " \"numberOfRoomsRequested\" : 1,\n" + " \"moreResultsAvailable\" : true,\n" + " \"cacheKey\" : \"7790c974:13ff7e2c374:6ccd\",\n" + " \"cacheLocation\" : \"10.186.170.122:7300\",\n" + " \"HotelList\" : {\n" + " \"@activePropertyCount\" : \"223\",\n" + " \"@size\" : \"1\",\n" + " \"HotelSummary\" : {\n" + " \"@order\" : \"0\",\n" + " \"hotelId\" : 125727,\n" + " \"name\" : \"Red Lion Hotel on Fifth Avenue\",\n" + " \"address1\" : \"1415 5th Ave\",\n" + " \"city\" : \"Seattle\",\n" + " \"stateProvinceCode\" : \"WA\",\n" + " \"postalCode\" : 98101,\n" + " \"countryCode\" : \"US\",\n" + " \"airportCode\" : \"SEA\",\n" + " \"supplierType\" : \"E\",\n" + " \"hotelRating\" : 3.5,\n" + " \"propertyCategory\" : 1,\n" + " \"confidenceRating\" : 90,\n" + " \"amenityMask\" : 7847938,\n" + " \"tripAdvisorRating\" : 4,\n" + " \"locationDescription\" : \"Near Pike Place Market\",\n" + " \"shortDescription\" : \"<p><b>Location. </b> <br />Red Lion Hotel on Fifth Avenue is located close to 5th Avenue Theater, Pike Place Market, and Washington State Convention & Trade Center. Additional points of interest\",\n" + " \"highRate\" : 149,\n" + " \"lowRate\" : 126.65,\n" + " \"rateCurrencyCode\" : \"USD\",\n" + " \"latitude\" : 47.60985,\n" + " \"longitude\" : -122.33475,\n" + " \"proximityDistance\" : 11.168453,\n" + " \"proximityUnit\" : \"MI\",\n" + " \"hotelInDestination\" : true,\n" + " \"thumbNailUrl\" : \"/hotels/1000000/60000/51000/50947/50947_180_t.jpg\",\n" + " \"deepLink\" : \"travel.ian/index.jsp?pageName=hotAvail&cid=55505&hotelID=125727&mode=2&numberOfRooms=1&room-0-adult-total=2&room-0-child-total=0&arrivalMonth=8&arrivalDay=4&departureMonth=8&departureDay=5&showInfo=true&locale=en_US&currencyCode=USD\",\n" + " \"RoomRateDetailsList\" : {\n" + " \"RoomRateDetails\" : {\n" + " \"roomTypeCode\" : 253461,\n" + " \"rateCode\" : 201054304,\n" + " \"maxRoomOccupancy\" : 2,\n" + " \"quotedRoomOccupancy\" : 2,\n" + " \"minGuestAge\" : 0,\n" + " \"roomDescription\" : \"Classic Single Queen\",\n" + " \"promoId\" : 202161947,\n" + " \"promoDescription\" : \"Summer Sale! Save 15%\",\n" + " \"currentAllotment\" : 0,\n" + " \"propertyAvailable\" : true,\n" + " \"propertyRestricted\" : false,\n" + " \"expediaPropertyId\" : 50947,\n" + " \"rateKey\" : \"0ABAAA7A-90C9-7491-3FF2-7E2C37496CCE\",\n" + " \"RateInfo\" : {\n" + " \"@rateChange\" : \"false\",\n" + " \"@promo\" : \"true\",\n" + " \"@priceBreakdown\" : \"true\",\n" + " \"ChargeableRateInfo\" : {\n" + " \"@total\" : \"151.23\",\n" + " \"@surchargeTotal\" : \"24.58\",\n" + " \"@nightlyRateTotal\" : \"126.65\",\n" + " \"@maxNightlyRate\" : \"126.65\",\n" + " \"@currencyCode\" : \"USD\",\n" + " \"@commissionableUsdTotal\" : \"126.65\",\n" + " \"@averageRate\" : \"126.65\",\n" + " \"@averageBaseRate\" : \"149.0\",\n" + " \"NightlyRatesPerRoom\" : {\n" + " \"@size\" : \"1\",\n" + " \"NightlyRate\" : {\n" + " \"@promo\" : \"true\",\n" + " \"@rate\" : \"126.65\",\n" + " \"@baseRate\" : \"149.0\"\n" + " }\n" + " },\n" + " \"Surcharges\" : {\n" + " \"@size\" : \"1\",\n" + " \"Surcharge\" : {\n" + " \"@amount\" : \"24.58\",\n" + " \"@type\" : \"TaxAndServiceFee\"\n" + " }\n" + " }\n" + " }\n" + " },\n" + " \"ValueAdds\" : {\n" + " \"@size\" : \"1\",\n" + " \"ValueAdd\" : {\n" + " \"@id\" : \"2048\",\n" + " \"description\" : \"Free Wireless Internet\"\n" + " }\n" + " }\n" + " }\n" + " }\n" + " }\n" + " }\n" + " }\n" + " }"; rootNode = new ObjectMapper().readTree(new StringReader(jsonString)); } //other methods public void basicTreeModelRead() { //Just like DOM, our data is in a hierarchy of node (in this case, it is JsonNode) JsonNode aField = rootNode.get("customerSessionId"); //the customerSessionId has a String value String myString = aField.asText(); System.out.println("customerSessionId is:" + myString); } }

StartHere.java:

StartHere.java:

package JsonExample1; import java.io.IOException; public class StartHere { public static void main(String[] args) { App2 myApp = new App2(); try { myApp.setup(); } catch (IOException e) { e.printStackTrace(); //To change body of catch statement use File | Settings | File Templates. } myApp.basicTreeModelRead(); } }

调试后,我发现aField值保持为空. 有什么想法吗?

After debugging I found that aField value remains null. Any ideas?

推荐答案

您的根节点没有customerSessionId,它具有HotelListResponse.首先得到.

Your root node doesn't have a customerSessionId, it has a HotelListResponse. Get that first.

//other methods public void basicTreeModelRead() { JsonNode innerNode = rootNode.get("HotelListResponse"); // Get the only element in the root node // get an element in that node JsonNode aField = innerNode.get("customerSessionId"); //the customerSessionId has a String value String myString = aField.asText(); System.out.println("customerSessionId is:" + myString); }

此打印

customerSessionId is:0ABAAA7A-90C9-7491-3FF2-7E2C37496CA2

更多推荐

如何使用jackson库从JSON字符串获取值?

本文发布于:2023-10-12 00:08:15,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1483229.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:字符串   如何使用   jackson   JSON

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!