这是我从API获得的响应

2015-08-31 7:29:45 [GDMNetManagerSMB.swift-228]: response:     Optional(<NSHTTPURLResponse: 0x7fd6c507c6a0> { URL: ... } { status code:     200, headers {
    Age = 0;
    "Cache-Control" = "max-age=0, private, must-revalidate";
    Connection = "keep-alive";
    "Content-Type" = "application/json; charset=utf-8";
    Date = "Tue, 01 Sep 2015 02:29:43 GMT";
    Etag = "\"b227c2...28c2034ac\"";
    Server = "ATS/5.2.1";
    Status = "200 OK";
    "Transfer-Encoding" = Identity;
    "X-Content-Type-Options" = nosniff;
    "X-Frame-Options" = SAMEORIGIN;
    "X-Request-Id" = "17f03082-2f44-436a-84f5-7f038e77988f";
    "X-Runtime" = "0.151788";
    "X-UA-Compatible" = "chrome=1";
    "X-XSS-Protection" = "1; mode=block";
} })


然后,在代码中我打印json,然后尝试提取“ count”和“ total_count”

NSLog("sjson :  \(sjson)")

let cnt = sjson["count"]
NSLog("count :  \(cnt)")

let tot_cnt = sjson["total_count"]
NSLog("total_count :  \(tot_cnt)")


这是控制台输出

2015-08-31 19:46:57.416 MyApp[79763:2558418] sjson :      {"count":2,"total_count":2,"current_page":1,"per_page":25,"pages":1,"taxons":[{"taxons":[{"taxons":[{"taxons":[],"id":7,"name":"Burlesque","pretty_name":"Categories -\u003E Modern designs -\u003E Wacko -\u003E Burlesque","permalink":"burlesque","parent_id":5,"taxonomy_id":1,"updated_at":"2015-03-02T22:12:06.000Z"}],"id":5,"name":"Wacko","pretty_name":"Categories -\u003E Modern designs -\u003E Wacko","permalink":"wacko","parent_id":4,"taxonomy_id":1,"updated_at":"20    15-08-22T15:34:07.000Z"}],"id":4,"name":"Modern    designs","pretty_name":"Categories -\u003E Modern designs","permalink":"modern-designs","parent_id":1,"taxonomy_id":1,"updated_at":"2015-08-22T16:03:31.000Z"},{"taxons":[{"taxons":[],"id":6,"name":"Victorian","pretty_name":"Categories -\u003E Classic designs -\u003E Victorian","permalink":"victorian","parent_id":3,"taxonomy_id":1,"updated_at":"2015-06-11T20:07:52.000Z"}],"id":3,"name":"Classic designs","pretty_name":"Categories -\u003E Classic designs","permalink":"classic-designs","parent_id":1,"taxonomy_id":1,"updated_at":"2015-08-22T15:30:18.000Z"}]}
2015-08-31 19:46:57.417 MyApp[79763:2558418] count :  null
2015-08-31 19:46:57.417 MyApp[79763:2558418] total_count :  null


与通常情况唯一不同的是JSON包含Unicode字符,例如

"pretty_name":"Categories -\u003E Modern designs -\u003E Wacko -\u003E Burlesque"


我检查了以下内容:


响应是UTF-8编码的

"Content-Type" = "application/json; charset=utf-8";

json有效(使用jsonlint.com-实际上是Spree端点/ api / taxonomies / 1 / taxons)

  {
"count": 2,
"total_count": 2,
"current_page": 1,
"per_page": 25,
"pages": 1,
"taxons": [
    {
        "taxons": [
            {
                "taxons": [
                    {
                        "taxons": [],
                        "id": 7,
                        "name": "Burlesque",
                        "pretty_name": "Categories -> Modern designs -> Wacko -> Burlesque",
                        "permalink": "burlesque",
                        "parent_id": 5,
                        "taxonomy_id": 1,
                        "updated_at": "2015-03-02T22:12:06.000Z"
                    }
                ],
                "id": 5,
                "name": "Wacko",
                "pretty_name": "Categories -> Modern designs -> Wacko",
                "permalink": "wacko",
                "parent_id": 4,
                "taxonomy_id": 1,
                "updated_at": "2015-08-22T15:34:07.000Z"
            }
        ],
        "id": 4,
        "name": "Modern designs",
        "pretty_name": "Categories -> Modern designs",
        "permalink": "modern-designs",
        "parent_id": 1,
        "taxonomy_id": 1,
        "updated_at": "2015-08-22T16:03:31.000Z"
    },
    {
        "taxons": [
            {
                "taxons": [],
                "id": 6,
                "name": "Victorian",
                "pretty_name": "Categories -> Classic designs -> Victorian",
                "permalink": "victorian",
                "parent_id": 3,
                "taxonomy_id": 1,
                "updated_at": "2015-06-11T20:07:52.000Z"
            }
        ],
        "id": 3,
        "name": "Classic designs",
        "pretty_name": "Categories -> Classic designs",
        "permalink": "classic-designs",
        "parent_id": 1,
        "taxonomy_id": 1,
        "updated_at": "2015-08-22T15:30:18.000Z"
    }
]
}



这里可能是什么问题?

更新:我尝试打印SwiftyJSON错误,这是我得到的:

let cnt = sjson["count"].error
NSLog("count :  \(cnt)")
let tot_cnt = sjson["total_count"].error
NSLog("total_count :  \(tot_cnt)")


2015-09-01 09:24:30.543 SMBAppEnt[84325:2642079] count :  Optional(Error Domain=SwiftyJSONErrorDomain Code=901 "Dictionary["count"] failure, It is not an dictionary" UserInfo=0x7fca2f81f100 {NSLocalizedDescription=Dictionary["count"] failure, It is not an dictionary})
2015-09-01 09:24:30.543 SMBAppEnt[84325:2642079] total_count :  Optional(Error Domain=SwiftyJSONErrorDomain Code=901 "Dictionary["total_count"] failure, It is not an dictionary" UserInfo=0x7fca2cd45d90 {NSLocalizedDescription=Dictionary["total_count"] failure, It is not an dictionary})

最佳答案

NSLog("sjson :  \(sjson)")

let cnt = sjson["count"].string
NSLog("count :  \(cnt)")

let tot_cnt = sjson["total_count"].string
NSLog("total_count :  \(tot_cnt)")


要么

NSLog("sjson :  \(sjson)")

let cnt = sjson["count"]!.string!
NSLog("count :  \(cnt)")

let tot_cnt = sjson["total_count"]!.string!
NSLog("total_count :  \(tot_cnt)")

10-02 16:53