Как использовать 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.

Другие вопросы по тегам