Как преобразовать строку в JSON с помощью SwiftyJSON

Строка для преобразования:

[{"description": "Hi","id":2,"img":"hi.png"},{"description": "pet","id":10,"img":"pet.png"},{"description": "Hello! :D","id":12,"img":"hello.png"}]

Код для преобразования строки:

var json = JSON(stringLiteral: stringJSON)

Строка преобразуется в JSON, и когда я пытаюсь подсчитать, сколько блоков находится внутри этого JSON (ожидаемый ответ = 3), я получаю 0.

print(json.count)

Выход консоли: 0

Что мне не хватает? Помощь очень ценится.

Ответ 1

Привет, ребята, я исправлю это таким образом...

note: я буду использовать переменную "string" как переменную, содержащую JSON

закодировать sting с NSData как это

var encodedString : NSData = (string as NSString).dataUsingEncoding(NSUTF8StringEncoding)!

2º un-encode закодированная строка (это может звучать немного странно, хехе)

var finalJSON = JSON(data: encodedString)

и вы можете делать то, что вам нравится в этом JSON!: D

как получить количество разделов в нем (это был реальный вопрос) с

finalJSON.count или print(finalJSON[0]) или что вам нравится делать.

Итак, я надеюсь, вам понравится, как я нашел!

сохранить кодирование, Габриэль Куадрос: D

Ответ 2

Собственно, в SwifyJSON была встроенная функция, называемая parse

/**
 Create a JSON from JSON string
- parameter string: Normal json string like '{"a":"b"}'

- returns: The created JSON
*/
public static func parse(string:String) -> JSON {
    return string.dataUsingEncoding(NSUTF8StringEncoding)
        .flatMap({JSON(data: $0)}) ?? JSON(NSNull())
}

var json = JSON.parse(stringJSON)

теперь он изменился на

var json = JSON.init(parseString: stringJSON)

Ответ 3

Я использую следующее:

let yourString = NSMutableString()

let dataToConvert = yourString.data(using: String.Encoding.utf8.rawValue)

let json = JSON(data: dataToConvert!)

print("\nYour string: " + String(describing: json))