Как извлечь значения из большого ответа JSON с несколькими массивами и скобками? - PullRequest
0 голосов
/ 06 мая 2019

У меня есть ответ JSON (более 500 строк), в котором есть несколько массивов и скобок.В основном чрезмерно вложенный ответ.

Я использую Alamofire для получения и получаю JSONData в качестве ответа.Но я не знаю, как извлечь значения из ответа и распечатать его в пользовательской ячейке.

Я использую Alamofire 5 для получения ответа JSON.

Пожалуйста, извините, если это звучит слишкомновичок, я новичок в разработке iOS.

{
    "availabilityResultList": [
        {
            "availabilityRouteList": [
                {
                    "availabilityByDateList": [
                        {
                            "originDestinationOptionList": [
                                {
                                    "fareComponentGroupList": [
                                        {
                                            "boundList": [
                                                {
                                                    "availFlightSegmentList": [
                                                        {
                                                            "addOnSegment": false,
                                                            "flightSegment": {
                                                                "journeyDuration": "PT1H15M",
                                                                "distance": 1,
                                                                "departureAirport": {
                                                                    "locationName": "LOC",
                                                                    "cityInfo": {
                                                                        "country": {
                                                                            "locationName": "LOC",
                                                                            "currency": {
                                                                                "code": "USD"
                                                                            },
                                                                            "locationCode": "LOC",
                                                                            "locationNameLanguage": "EN"
                                                                        },
                                                                        "city": {
                                                                            "locationName": "LOC",
                                                                            "locationCode": "LOC",
                                                                            "locationNameLanguage": "EN"
                                                                        }
                                                                    },
                                                                    "codeContext": "ASD",
                                                                    "language": "EN",
                                                                    "locationCode": "LOC"
                                                                },
                                                                "equipment": {
                                                                    "airEquipType": "ABC",
                                                                    "changeofGauge": false
                                                                },
                                                                "remark": "NO",
                                                                "ticketType": "PP",
                                                                "onTimeRate": 0,
                                                                "flightNotes": [
                                                                    {
                                                                        "deiCode": 0
                                                                    }
                                                                ],
                                                                "flightSegmentID": "",
                                                                "flownMileageQty": 0,
                                                                "flightNumber": "106",
                                                                "groundDuration": "",
                                                                "trafficRestriction": {
                                                                    "code": "",
                                                                    "explanation": {}
                                                                },
                                                                "stopQuantity": 0,
                                                                "codeshare": false,
                                                                "secureFlightDataRequired": false,
                                                                "departureDateTime": {
                                                                    "month": 5,
                                                                    "hour": 6,
                                                                    "year": 2019,
                                                                    "timezone": 270,
                                                                    "day": 6,
                                                                    "minute": 45,
                                                                    "second": 0
                                                                },
                                                                "ondControlled": false,
                                                                "arrivalDateTime": {
                                                                    "month": 5,
                                                                    "hour": 8,
                                                                    "year": 2019,
                                                                    "timezone": 270,
                                                                    "day": 6,
                                                                    "minute": 0,
                                                                    "second": 0
                                                                },
                                                                "airline": {
                                                                    "code": "RQ"
                                                                },
                                                                "arrivalAirport": {
                                                                    "locationName": "LOC",
                                                                    "cityInfo": {
                                                                        "country": {
                                                                            "locationName": "AA",
                                                                            "currency": {
                                                                                "code": "USD"
                                                                            },
                                                                            "locationCode": "AA",
                                                                            "locationNameLanguage": "EN"
                                                                        },
                                                                        "city": {
                                                                            "locationName": "loc",
                                                                            "locationCode": "LOC",
                                                                            "locationNameLanguage": "EN"
                                                                        }
                                                                    },
                                                                    "codeContext": "ASD",
                                                                    "language": "EN",
                                                                    "locationCode": "LOC"
                                                                },
                                                                "sector": "ASD",
                                                                "accumulatedDuration": ""
                                                            },
                                                            "marriageGroup": "-1"
                                                        }
                                                    ],
                                                    "boundCode": "Outbound"
                                                }
                                            ]
                                        }
                                    ]
                                },

1 Ответ

4 голосов
/ 06 мая 2019

JSON - это очень простой формат и легко читаемый.Существует только два разных типа коллекции и четыре типа значений.

  • {} - словарь, подписанный ключом
  • [] - массив, подписанный индексом (на основе нуля)

  • Все в двойных кавычках равно String, даже "123" и "false"
  • false и true равноBool
  • Числовые значения Double, без дробных цифр Int
  • <null> is NSNull

С SwiftyJSON вы получаете distance в flightSegment с (root представляет объект верхнего уровня`)

root["availabilityResultList"][0]["availabilityRouteList"][0]["availabilityByDateList"][0]["originDestinationOptionList"][0]["fareComponentGroupList"][0]["boundList"][0]["availFlightSegmentList"][0]["flightSegment"]["distance"]
...