0

在此处输入图像描述 这是我解析 JSON 的方法

var apiUrl = NSURL(string: "http://127.0.0.1/api.php")
var apiData = NSData.dataWithContentsOfURL(apiUrl, options: NSDataReadingOptions.DataReadingUncached, error: nil)

var apiJson = NSJSONSerialization.JSONObjectWithData(apiData, options: NSJSONReadingOptions.AllowFragments, error: nil)

http://127.0.0.1/api.phpurl 返回数据。

{
    "tit":"服务器",
    "loc":[
        {
            "_name":"北京",
            "evn":"funckEvent:"
        },{
            "_name":"英国",
            "evn":"funckEvent:"
        },{
            "_name":"日本",
            "evn":"funckEvent:"
        },{
            "_name":"发过",
            "evn":"funckEvent:"
        },{
            "_name":"中国",
            "evn":"funckEvent:"
        }
    ]
}

如何循环json数组?我想循环打印括号的内容{"_name":"中国","evn":"funckEvent:"}

var loc = apiJson.objectForKey("loc")

4

1 回答 1

1

该代码对我来说非常好用(运行localhost在“json.html”处提供确切 JSON 的服务器);但是,直到我指定了特定的端口(在我的例子中是NSURL(string: "http://127.0.0.1:8000/json.html")),它才能打印出来。您是否尝试过明确指定端口?

dataWithContentsofURL此外,通过声明 NSError 变量并将其传入来实际捕获返回的错误可能会很有启发性,如下所示:

var error: NSError?
var apiData = NSData.dataWithContentsOfURL(apiUrl, options: NSDataReadingOptions.DataReadingUncached, error: &error)

要在此处循环元素,您需要将其转换为数组:

var loc = apiJson.objectForKey("loc") as [AnyObject]
for i in loc {
    println(i["_name"])
}

这将打印:

北京
英国
日本
发过
中国
于 2014-07-29T03:29:54.227 回答