Как разобрать JSON с помощью [] скобок? - PullRequest
0 голосов
/ 02 февраля 2020

Я анализирую JSON на таком веб-сайте (под request.httpMethod = "GET" в Swift):

  let example = json.data.first?.TShirtPrice

JSON, которое я получаю, структурировано как поэтому

{"returned":1,"data":[{"TShirtPrice":"5"}]}

Но у меня есть новый набор JSON, структурированный без скобок [], например:

{"returned":1,"base":"USD","data":{"TShirtPrice":"3.448500"}}

Тот же самый точный код не позволяет мне узнать цену рубашки больше - что за починка? Спасибо!

Это мой код

 if let data = data {

                    do {
                        let json = try JSONDecoder().decode(Root.self,from: data)


                        let price = json.data.first?.TShirtPrice


                        struct Root: Codable {
                            let data: [Datum]
                        }
                        struct Datum: Codable {
                            let TShirtPrice: String


                        }

1 Ответ

1 голос
/ 02 февраля 2020

Если ваша модель данных выглядит следующим образом, вы можете использовать Struct или Class, это не проблема.

struct Root: Decodable {
    let returned: Int?
    let base: String?
    let data: Price?
}

struct Price: Codable {
    let TShirtPrice: String? 
}

Пример JSON Стинг выглядит следующим образом

let jsonString = """
{
  "returned": 1,
  "base": "USD",
  "data": {
    "TShirtPrice": "3.448500"
  }
}
"""

Вы просто нужно изменить способ анализа данных путем внесения изменений в модель данных, как указано выше, и способ доступа к данным, как указано ниже

if let data = jsonString.data(using: .utf8) {
    let myObject = try JSONDecoder().decode(Root.self, from: data)
    print(myObject.data?.TShirtPrice)
}

В вашем случае это будет выглядеть так

if let data = data {
    do {
        let json = try JSONDecoder().decode(Root.self,from: data)
        let Price = json.data?.TShirtPrice
    }
}

Что здесь изменилось?

Поскольку ваши ценовые данные были в формате массива, код был написан соответствующим образом, и согласно новым данным он больше не является массивом поэтому вы должны адаптировать эти изменения и на стороне приложения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...