gpt4 book ai didi

java - 如何从json文件中只获取部分属性?

转载 作者:行者123 更新时间:2023-11-30 01:55:49 26 4
gpt4 key购买 nike

我有如下所示的 json 文件:

从这个 json 中,我只需要获取每个航类的总价格。我需要以一种方式获取航类数量(即分割列表大小)。我使用 http://www.jsonschema2pojo.org/ 创建了很多对象。通过大量的 for 循环,我获得了必要的数据。但我的问题是:有没有更简单的方法可以从这个 json 文件中获取这些信息?

{
"type": "flight-offer",
"id": "1549454712606-1539032420",
"offerItems": [
{
"services": [
{
"segments": [
{
"flightSegment": {
"departure": {
"iataCode": "SJJ",
"at": "2019-02-08T06:30:00+01:00"
},
"arrival": {
"iataCode": "ZAG",
"at": "2019-02-08T07:20:00+01:00"
},
"carrierCode": "OU",
"number": "341",
"aircraft": {
"code": "DH4"
},
"operating": {
"carrierCode": "OU",
"number": "341"
},
"duration": "0DT0H50M"
},
"pricingDetailPerAdult": {
"travelClass": "ECONOMY",
"fareClass": "K",
"availability": 3,
"fareBasis": "KEASY2"
}
}
]
},
{
"segments": [
{
"flightSegment": {
"departure": {
"iataCode": "ZAG",
"at": "2019-02-15T14:10:00+01:00"
},
"arrival": {
"iataCode": "SJJ",
"at": "2019-02-15T15:00:00+01:00"
},
"carrierCode": "OU",
"number": "344",
"aircraft": {
"code": "DH4"
},
"operating": {
"carrierCode": "OU",
"number": "344"
},
"duration": "0DT0H50M"
},
"pricingDetailPerAdult": {
"travelClass": "ECONOMY",
"fareClass": "U",
"availability": 9,
"fareBasis": "UEASY2"
}
}
]
}
],
"price": {
"total": "164.09",
"totalTaxes": "83.09"
},
"pricePerAdult": {
"total": "164.09",
"totalTaxes": "83.09"
}
}
]
},
{
"type": "flight-offer",
"id": "1549454712606--1458421402",
"offerItems": [
{
"services": [
{
"segments": [
{
"flightSegment": {
"departure": {
"iataCode": "SJJ",
"at": "2019-02-08T15:10:00+01:00"
},
"arrival": {
"iataCode": "BEG",
"terminal": "2",
"at": "2019-02-08T16:00:00+01:00"
},
"carrierCode": "JU",
"number": "113",
"aircraft": {
"code": "AT7"
},
"operating": {
"carrierCode": "JU",
"number": "113"
},
"duration": "0DT0H50M"
},
"pricingDetailPerAdult": {
"travelClass": "ECONOMY",
"fareClass": "U",
"availability": 7,
"fareBasis": "UNBRBA"
}
},
{
"flightSegment": {
"departure": {
"iataCode": "BEG",
"terminal": "2",
"at": "2019-02-08T18:20:00+01:00"
},
"arrival": {
"iataCode": "ZAG",
"at": "2019-02-08T19:35:00+01:00"
},
"carrierCode": "JU",
"number": "234",
"aircraft": {
"code": "AT7"
},
"operating": {
"carrierCode": "JU",
"number": "234"
},
"duration": "0DT1H15M"
},
"pricingDetailPerAdult": {
"travelClass": "ECONOMY",
"fareClass": "U",
"availability": 7,
"fareBasis": "UNBRBA"
}
}
]
},
{
"segments": [
{
"flightSegment": {
"departure": {
"iataCode": "ZAG",
"at": "2019-02-15T10:00:00+01:00"
},
"arrival": {
"iataCode": "BEG",
"terminal": "2",
"at": "2019-02-15T11:05:00+01:00"
},
"carrierCode": "JU",
"number": "231",
"aircraft": {
"code": "AT7"
},
"operating": {
"carrierCode": "JU",
"number": "231"
},
"duration": "0DT1H5M"
},
"pricingDetailPerAdult": {
"travelClass": "ECONOMY",
"fareClass": "U",
"availability": 7,
"fareBasis": "UNBRBA"
}
},
{
"flightSegment": {
"departure": {
"iataCode": "BEG",
"terminal": "2",
"at": "2019-02-15T13:50:00+01:00"
},
"arrival": {
"iataCode": "SJJ",
"at": "2019-02-15T14:40:00+01:00"
},
"carrierCode": "JU",
"number": "112",
"aircraft": {
"code": "AT7"
},
"operating": {
"carrierCode": "JU",
"number": "112"
},
"duration": "0DT0H50M"
},
"pricingDetailPerAdult": {
"travelClass": "ECONOMY",
"fareClass": "U",
"availability": 7,
"fareBasis": "UNBRBA"
}
}
]
}
],
"price": {
"total": "225.45",
"totalTaxes": "145.45"
},
"pricePerAdult": {
"total": "225.45",
"totalTaxes": "145.45"
}
}
]
}

最佳答案

您的 JSON 包含两个以逗号分隔的单独对象。您需要添加括号:

[{...},{...}]

如果您只需要价格,您可以读取JSON,如下所示:

ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(source);

List<JsonNode> prices = node.findValues("price");
for (JsonNode price : prices) {
System.out.println(price.get("total"));
System.out.println(price.get("totalTaxes"));
}

编辑
您可以通过类似的方式找到flightSegment:

ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(jsonFile);

List<JsonNode> segments = node.findValues("segments");
for (JsonNode segment : segments) {
List<JsonNode> flightSegments = segment.findValues("flightSegment");
System.out.println(flightSegments.size());
}

有关详细信息,请参阅:

  1. Working with Tree Model Nodes in Jackson

关于java - 如何从json文件中只获取部分属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54553437/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com