Какую структуру использовать для анализа данных в JSON? - PullRequest
0 голосов
/ 09 июля 2020

Я новичок в использовании JSON, и я пытаюсь найти лучшее решение для синтаксического анализа приведенных ниже данных в моем приложении с помощью swift. До сих пор я успешно создавал структуры для синтаксического анализа данных в своих приложениях, но с этим API я немного запутался.

Путь к значению, которое я ищу, возвращает: 0.price

Ниже JSON я работаю - мне нужна структура для получения значения 'price' - я понимаю, что это быстрый словарь, вложенный в массив, но я действительно не знаю, как создать эту структуру чтобы получить значение 0.price.

[
    {
        "id": "BTC",
        "currency": "BTC",
        "symbol": "BTC",
        "name": "Bitcoin",
        "logo_url": "https://s3.us-east-2.amazonaws.com/nomics-api/static/images/currencies/btc.svg",
        "price": "9397.86203481",
        "price_date": "2020-07-09T00:00:00Z",
        "price_timestamp": "2020-07-09T05:10:00Z",
        "circulating_supply": "18427462",
        "max_supply": "21000000",
        "market_cap": "173178745528",
        "rank": "1",
        "high": "19343.01808710",
        "high_timestamp": "2017-12-16T00:00:00Z",
        "1d": {
            "volume": "19780482959.23",
            "price_change": "55.47211721",
            "price_change_pct": "0.0059",
            "volume_change": "1974758604.83",
            "volume_change_pct": "0.1109",
            "market_cap_change": "1030908096.99",
            "market_cap_change_pct": "0.0060"
        },
        "30d": {
            "volume": "663105718213.57",
            "price_change": "-472.08068928",
            "price_change_pct": "-0.0478",
            "volume_change": "-451402235448.26",
            "volume_change_pct": "-0.4050",
            "market_cap_change": "-8416909381.05",
            "market_cap_change_pct": "-0.0463"
        }
    }
]

Спасибо,

Max

1 Ответ

0 голосов
/ 09 июля 2020

Используйте Codable для анализа вышеуказанного JSON ответа .

Codable Модели:

Вариант-1: Если вы хотите проанализировать все данные

struct Response: Codable {
    let id, currency, symbol, name: String
    let logoUrl: String
    let price: String
    let priceDate, priceTimestamp: String
    let circulatingSupply, maxSupply, marketCap, rank: String
    let high: String
    let highTimestamp: String
    let the1D, the30D: The1_D

    enum CodingKeys: String, CodingKey {
        case id, currency, symbol, name, logoUrl, price, priceDate, priceTimestamp, circulatingSupply, maxSupply, marketCap, rank, high, highTimestamp
        case the1D = "1d"
        case the30D = "30d"
    }
}

struct The1_D: Codable {
    let volume, priceChange, priceChangePct, volumeChange: String
    let volumeChangePct, marketCapChange, marketCapChangePct: String

}

Вариант-2: Если вам просто нужно значение price и все игнорировать иначе,

struct Response: Codable {
    let price: String
}

Анализ JSON data вот так,

do {
    let decoder = JSONDecoder()
    decoder.keyDecodingStrategy = .convertFromSnakeCase
    let response = try decoder.decode([Response].self, from: data)
    let price = response.first?.price //Get the value of price here..
} catch {
    print(error)
}
...