Вопрос

enter image description hereВот мой метод анализа 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.php URL вернул данные.

{
    "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")

Это было полезно?

Решение

Этот код у меня работает отлично (запуск localhost сервер, обслуживающий именно этот JSON в 'json.html');однако его не удалось распечатать, пока я не указал конкретный порт (в моем случае 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"])
}

Это напечатает:

北京
英国
日本
发过
中国
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top