Разбор JSON с помощью SwiftyJSON

У меня возникли проблемы с разбором следующего файла JSON с помощью SwiftyJSON. Я просмотрел Интернет и безуспешно пробовал различные предлагаемые решения.

Вот JSON:

{'info-leag':{'Status':1,'Name':'Testing Name','url-lig':'test.testing.com','uid':'12345'}}

И мой соответствующий код:

//initializes request
    let request = NSURLRequest(URL: url!)
    NSURLConnection.sendAsynchronousRequest(request, queue: NSOperationQueue.currentQueue()) { response, maybeData, error in
        if let data = maybeData {

            let json = JSON(data: data)


            //stores data as UTF8 String
            let contents = NSString(data:data, encoding:NSUTF8StringEncoding)

Первая часть, кажется, работает нормально, я могу получить JSON и сохранить его как данные, внизу я преобразовал его в строку, чтобы убедиться, что я получаю правильную информацию, а затем распечатаю ее, чтобы убедиться.

Я пробовал разные вещи, такие как:

let name = json["info-league"]["Name"] //can't seem to get the context

Я пытаюсь сохранить имя и uid в виде двух строк, а также статус в виде int.

Спасибо!


person FredLoh    schedule 15.07.2015    source источник
comment
Если это фактический ответ JSON, он недействителен: одинарные кавычки должны быть двойными. Кроме того, в вашем примере опечатка: инфолига ≠ инфолига.   -  person Eric Aya    schedule 15.07.2015
comment
Вы можете использовать www.jsonlint.com для проверки вашего JSON.   -  person charlyatwork    schedule 15.07.2015
comment
Это фактический ответ JSON, я поработаю над его изменением. Как только я получу его в формате двойной кавычки, будет ли работать синтаксис, который я использовал выше? (если не опечатка)   -  person FredLoh    schedule 15.07.2015
comment
Да, это будет работать с вашим примером.   -  person Eric Aya    schedule 15.07.2015
comment
Сработало отлично, спасибо @EricD.   -  person FredLoh    schedule 16.07.2015


Ответы (2)


После того, как вы сделали свой JSON действительным следующим образом:

{"info-league":{"Статус":1,"Имя":"Имя тестирования","url-lig":"test.testing.com","uid":"12345"}}

вы сможете использовать свой пример, он работает (я только что проверил):

let name = json["info-league"]["Name"]

но лучше использовать типы SwiftyJSON:

let name = json["info-league"]["Name"].string
let status = json["info-league"]["Status"].int

поэтому ваши переменные имеют известные типы для последующего использования.

Если вы этого не сделаете, они будут иметь тип JSON, тип, созданный SwiftyJSON, и вам придется приводить их позже (не проблема, зависит от того, как вы организованы в своем коде).

person Eric Aya    schedule 15.07.2015

Пытаться:

let name = json["info-league"]["Name"].string
person clinton vansciver    schedule 15.07.2015