如何在Swift中解析从php接收的数据编码


How to parse data encode received from php in Swift?

从php文件接收数据,格式如下:

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

我知道如何解析这在Swift2使用下一个代码反复改变separatedBy字符串:

  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"}}
]

我的数据是不同的。我怎样才能更容易地做到这一点?

谢谢!

你可以像这样读取数组

首先你需要像这样将数据转换成有效的json然后访问它

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

        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;
    };
}

我建议你使用SwiftyJSON (6k+ stars)库将响应转换为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
    //...
}

操场屏幕截图