Анализ ответа JSON с помощью SwiftyJSON

#json #swift #aws-api-gateway #aws-amplify #swifty-json

#json #быстрый #aws-api-шлюз #aws-усиление #быстрый-json

Вопрос:

У меня есть следующий код, и я пытаюсь получить значения, используя SwiftyJSON:

 let string =
    """
        {"ResponseMetadata": {"RequestId": "b5d6ecad-e050-4d1f-8429-74a2775a6fe9", "HTTPStatusCode": 200, "HTTPHeaders": {"x-amzn-requestid": "b5d6ecad-e050-4d1f-8429-74a2775a6fe9", "content-type": "application/json", "content-length": "271", "date": "Tue, 22 Dec 2020 22:45:17 GMT"}, "RetryAttempts": 0}, "numberOfRecordsUpdated": 0, "records": [[{"stringValue": "6998DFFE-A9CF-4BEA-86AD-C356BB865E27"}, {"stringValue": "david.craine@yahoo.com"}, {"stringValue": "David"}, {"stringValue": "Craine"}, {"stringValue": "dcraine"}, {"stringValue": "vendor1"}, {"stringValue": "vendor1_werw8"}]]}
    """
    
let body = JSON(string)
print(">>>>>>>>> (body["records"])")
 

Это возвращает null для тела [«записи»].

Я проверил этот ответ, используя https://jsonformatter.curiousconcept.com / #, поэтому я предполагаю, что он находится в правильном формате. Кто-нибудь может помочь, пожалуйста?

Комментарии:

1. «Тем не менее, когда я пытаюсь получить какие-либо элементы (например, «записи»), он возвращает null» И как именно вы пытались это сделать?

2. Предполагая, что объект JSON упомянутой строки называется body , я использую body[«записи»]

3. Я бы рекомендовал вам использовать Codable amp; JSONDecoder от Swift, это позволит вам анализировать и создавать JSON без использования какой-либо сторонней платформы

4. Попробуйте заменить let body = JSON(string) на let body = JSON(parseJSON: string) .

5. Спасибо @gcharita, это работает! Если вы опубликуете свой ответ, я отмечу его как правильный.

Ответ №1:

Попробуйте изменить эту строку:

 let body = JSON(string)
 

и вызовите init(parseJSON:) инициализатор JSON , который принимает String параметр as, например:

 let body = JSON(parseJSON: string)