#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)