Проблема со SwiftyJSON

Я использую Alamofire для получения данных из API. Я использую SwiftyJSON для анализа ответа JSON. В настоящее время я перебираю данные о продукте и хочу извлечь сведения о продукте и отобразить их в представлении коллекции. Проблема в том, что я не могу понять, как получить доступ к каждому продукту в массиве. Вот возвращенный массив:

{
                  "1": {
                    "product_id": 2982493187,
                    "merged_status": "TRUE",
                    "merged": [
                      {
                        "id": 2982493187,
                        "title": "Waves Eclipse Tee in Black",
                        "handle": "waves-eclipse-tee-in-black",
                        "published_at": "2015-10-09T21:00:50-07:00",
                        "published_scope": "global",
                      }
                    ]
                  }
                },
                {
                  "2": {
                    "product_id": 2982432131,
                    "merged_status": "TRUE",
                    "merged": [
                      {
                        "id": 2982432131,
                        "title": "Waves Eclipse Tee in Off White",
                        "handle": "waves-eclipse-tee-in-off-white",
                        "published_at": "2015-10-09T21:00:50-07:00",
                        "published_scope": "global",
                      }
                    ]
                  }
                }

Для каждого из этих продуктов я хочу получить доступ к product_id. Я пытаюсь сделать это так: productArray[0]["produdct_id"].int, но, похоже, это не работает. Любые идеи?


person Alex Smith    schedule 21.11.2015    source источник
comment
контекст вашей проблемы указывал, что к вашему верхнему уровню productArray следует обращаться как к словарю, а не к массиву   -  person Louis Tur    schedule 21.11.2015
comment
Как мне это сделать?   -  person Alex Smith    schedule 21.11.2015
comment
Вышеупомянутое недействительно json, если это то, что анализируется.   -  person JRD    schedule 21.11.2015


Ответы (3)


У вас в результатах не массив, а словарь с ключами "1", "2" и т.д.

let product_id = result["1"]["product_id"].int
person JRD    schedule 21.11.2015
comment
JSON, который у вас есть выше, недействителен json. Вы можете просмотреть подробности, подключив его к JSONLint. - person JRD; 21.11.2015

Кажется, что результат json представляет собой массив словаря, поэтому вы можете получить доступ к product_id через

let product_id = result[0]["1"]["product_id"].int
person YON    schedule 21.11.2015

Попробуй это:

let jsonProductsArray = JSON(theRawJSONData).array

for (key, productJSON):(String, JSON) in jsonProductsArray {
    print(key);
    let product_id = productJSON["product_id"].int
    print(product_id)
}
person Joe SHI    schedule 23.03.2016