Как использовать SwiftyJSON для чтения значений из JSON с несколькими объектами и массивами
У меня есть этот JSON, я хочу получить доступ к значениям с помощью библиотеки SwiftyJSON:
{"user":[{"id":"33","id_number":"0","first_name":"tom","last_name":"lily","city":"jeddah","gender":"0","DOB":"0000-00-00","phone_namber":"0000000000","email":"000"},
{"id":"34","id_number":"0","first_name":"tom","last_name":"lily","city":"jeddah","gender":"0","DOB":"0000-00-00","phone_namber":"0000000000","email":"000"}]}
Этот JSON содержит массивы и объекты. Когда я пытаюсь это, это не работает:
JSON["lawyers"]["id"].intValue
Как я могу получить доступ к id
и другие значения в этом JSON?
1 ответ
Во-первых, в этом JSON нет "юристов", и он никогда не начнет анализ данных. Во-вторых, все значения являются строковыми типами, поэтому, если вы хотите использовать их как Int, вы должны преобразовать их.
Итак, у вас есть "пользовательский" массив, что означает, что вы должны перебирать этот массив.
После этого вы сможете работать с элементами в массиве "user" и получать доступ к его значениям.
Вот функция, которую я использую. Его ввод - это JSON, с которым я работаю, и он сохраняет его в словаре.
var dataArray = [[String: String]]() // Init dictionary
func parseJSON(json: JSON) {
for item in json["user"].arrayValue { // This is the JSON array which contains the values that you need
let id = item["id"].stringValue // You access the value here
let first_name = item["first_name"].stringValue
let last_name = item["last_name"].stringValue
let email = item["email"].stringValue
let obj = ["id": id, "first_name": first_name, "last_name": last_name, "email": email]
dataArray.append(obj) // This appends the JSON parsed data to an array of dictionaries
}
}
Использование этого:
func usingTheParsedJSON(){
for user in dataArray {
print("user's id: ", user["id"], ", last_name: ", user["last_name"])
let convertedId: Int = Int(user["id"]) // If you want to use the id as Int. With this dictionary, you can only store it as String, since everything has to have the same type
}
}
Если вы можете редактировать данные JSON, то, удалив кавычки, вы можете использовать числа в качестве целых чисел при анализе JSON.
let id = item["id"].intValue // This goes into the func's for loop
Примечание: чтобы сохранить это в словаре, вам нужно преобразовать его в String с String(id). Этот метод хранения данных не самый лучший, я использую его, потому что у меня обычно есть строки и только одно целое число.
Я надеюсь, что это решит вашу проблему. Дай мне знать если тебе нужно что-нибудь еще!
PS: в данных JSON есть опечатка: phone_namber.