ios — Как разобрать кодирование данных, полученных от php в Swift?

Я получаю данные из php-файла в следующем формате:

 {"object:value", "object2:value2"...}
{"object:value", "object2:value2"...}

Я знаю, как разобрать это в Swift2, используя следующий код, неоднократно меняя строку separaBy:

  if let url = NSURL(string: strURL), let data = NSData(contentsOfURL: url) {
let strResult = NSString(data: data, encoding: NSUTF8StringEncoding)

}
tareas = strResult!.componentsSeparatedByString(",")

Но я хочу разобрать это легче. Я прочитал другие вопросы и ответы, но формат для анализа был:

[
{"person": {"name":"Dani","age":"24"}},
{"person": {"name":"ray","age":"70"}}
]

И мои данные разные. Как я могу сделать это проще?

Спасибо!

1

Решение

Вы можете прочитать это как массив, как это

Прежде всего вам нужно конвертировать ваши данные в действительный json, как это, а затем получить к нему доступ

var result: NSArray = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSArray
println("result:  \(result)")

Ex.

        var str = "[{\"person\": {\"name\":\"Dani\",\"age\":\"24\"}},{\"person\": {\"name\":\"ray\",\"age\":\"70\"}}]"
var data : NSData = str.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false)!

var result: NSArray = NSJSONSerialization.JSONObjectWithData(data, options: NSJSONReadingOptions.MutableContainers, error: nil) as! NSArray
println("Response:  \(result)")
println("Oth Object:  \(result[0])")

Выход

Response:  (
{
person =         {
age = 24;
name = Dani;
};
},
{
person =         {
age = 70;
name = ray;
};
}
)
Oth Object:  {
person =     {
age = 24;
name = Dani;
};
}
1

Другие решения

Я предлагаю вам использовать SwiftyJSON (6 000+ звезд) библиотека, которая преобразует ответ в JSON объект. Что-то вроде:

   if let url = NSURL(string: strURL), let data = NSData(contentsOfURL: url) {
let json = JSON(data: data!)
}

После этого вы можете легко извлечь любую информацию из JSON:

for item:JSON in json.arrayValue{
let person = item["person"].dictionaryValue
//...
}

Принтскрин игровая площадка

0

По вопросам рекламы [email protected]