Чтение объектов из ответа JSON и сохранение в непостоянном массиве - PullRequest
0 голосов
/ 05 июня 2018

Это мои данные JSON:

let jsonArray = [
    "array": [12.34, 56.78],
    "users": [
        [
            "id": 987654,
            "info": [
                "name": "jack",
                "email": "jack@gmail.com"
            ],
            "feeds": [98, 23443, 213239, 23232]
        ],
        [
            "id": 654321,
            "info": [
                "name": "jeffgukang",
                "email": "jeffgukang@gmail.com"
            ],
            "feeds": [12345, 56789, 12423, 12412]
        ]
    ]
]

Мой код для чтения "users" и "id"

let idArr = NSMutableArray()
let infoArr = NSMutableArray()
let usersArr = NSMutableArray()

for index in 0...1 { 
    infoArr.addObjects(from: (jsonArray["users"]![index] as! [String: Any])["info"] as! [Any]) 
} 
print("info arr : (infoArr)") 
for index in 0...1 { 
    idArr.addObjects(from: (jsonArray["users"]![index] as! [String: Any])["id"] as! [Any]) 
} 
print("id arr : (idArr)")

Но я получаю сообщения об ошибках типа:

Не удалось привести значение типа 'Swift._SwiftDeferredNSDictionary'(0x1079b8420) в' NSArray '(0x106332008)

Не удалось привести значение типа' Swift.Dictionary'(0x1105ac550) в' Swift.Array '(0x1105abf30).

Невозможно привести значение типа' Swift.Int '(0x11149f8c0) к' Swift.Array '(0x1114c4f30).

Ответы [ 3 ]

0 голосов
/ 05 июня 2018

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

var infoArr: [Any] = []
var idArr: [Any] = []

for i in 0..<(jsonArray["users"]!).count {
  infoArr.append((jsonArray["users"]![i] as! [String: Any])["info"])
  idArr.append((jsonArray["users"]![i] as! [String: Any])["id"])
}
0 голосов
/ 05 июня 2018
**Check correct code**


  var idArr = [Int]()
    var infoArr = [[String:Any]]()
    let usersArr = [Any]()

    for index in 0...1 {
        infoArr.append((jsonArray["users"]![index] as! [String: Any])["info"] as! [String:Any])
    }
    print("info arr : \(infoArr)")
    for index in 0...1 {
        idArr.append((jsonArray["users"]![index] as! [String: Any])["id"] as! Int)
    }
    print("id arr : \(idArr)")
0 голосов
/ 05 июня 2018

1 - измените это

["info"] as! [Any]

на

["info"] as! [String:Any]

2- и это

["id"] as! [Any]

на

["id"] as! NSNumber

//

var idArr = [NSNumber]()
var infoArr = [[String:Any]]()

for index in 0...1 { 
 infoArr.append((jsonArray["users"]![index] as! [String: Any])["info"] as! [String:Any]) 
} 
print("info arr : (infoArr)") 
for index in 0...1 { 
idArr.append((jsonArray["users"]![index] as! [String: Any])["id"] as! NSNumber) 
} 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...