1

JSON フィードがあります。

{
    "createEntities": [
        {
            "username": "hackImport",
            "deleted": false,
            "myName": "Stocks",
            "dateSynced": "2012-07-05T12:00:00-04:00",
            "uuidKey": "132256ef-1e94-483f-a87d-35caeee636db",
            "dateModified": "2012-04-13T08:06:17.077971-04:00",
            "sortKey": 5,
            "dateCreated": "2012-04-13T08:06:17.077971-04:00"
        },
        {
            "username": "hackImport",
            "deleted": false,
            "myName": "Foreign Currency",
            "dateSynced": "2012-07-05T12:00:00-04:00",
            "uuidKey": "43510d43-f17a-4d06-9138-0a304b9f09ff",
            "dateModified": "2012-04-13T08:06:17.077971-04:00",
            "sortKey": 2,
            "dateCreated": "2012-04-13T08:06:17.077971-04:00"
        },
        {
            "username": "adamek",
            "deleted": false,
            "myName": "Real Estate",
            "dateSynced": "2012-07-05T12:00:00-04:00",
            "uuidKey": "57a365e0-fa9c-4e47-b77b-5a3f23d3dbee",
            "dateModified": "2012-04-22T14:33:43.464506-04:00",
            "sortKey": 3,
            "dateCreated": "2012-04-13T08:06:17.077971-04:00"
        },
        {
            "username": "adamek",
            "deleted": false,
            "myName": "Mutual Funds",
            "dateSynced": "2012-07-05T12:00:00-04:00",
            "uuidKey": "8bd3f71c-9255-4505-87f7-a48a2665d366",
            "dateModified": "2012-05-01T19:28:15.897377-04:00",
            "sortKey": 7,
            "dateCreated": "2012-04-13T08:06:17.077971-04:00"
        },
        {
            "username": "hackImport",
            "deleted": false,
            "myName": "U.S. Currency",
            "dateSynced": "2012-07-05T12:00:00-04:00",
            "uuidKey": "ea2a086c-ddbd-4b75-ac29-130626a4f11b",
            "dateModified": "2012-04-13T08:06:17.077971-04:00",
            "sortKey": 1,
            "dateCreated": "2012-04-13T08:06:17.077971-04:00"
        },
        {
            "username": "hackImport",
            "deleted": false,
            "myName": "Other Property",
            "dateSynced": "2012-07-05T12:00:00-04:00",
            "uuidKey": "ec04d62e-97bf-4c0d-b64e-4b212fda6215",
            "dateModified": "2012-04-13T08:06:17.077971-04:00",
            "sortKey": 4,
            "dateCreated": "2012-04-13T08:06:17.077971-04:00"
        },
        {
            "username": "hackImport",
            "deleted": false,
            "myName": "Bonds",
            "dateSynced": "2012-07-05T12:00:00-04:00",
            "uuidKey": "fad7d556-c922-49c3-b7dd-ffa96eab9c55",
            "dateModified": "2012-04-13T08:06:17.077971-04:00",
            "sortKey": 6,
            "dateCreated": "2012-04-13T08:06:17.077971-04:00"
        }
    ],
    "modifyEntities": null,
    "deleteEntities": null,
    "entity": "CommodityTypes"
}

http://jsonlint.comは有効だと言っています。

でも:

[NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&jsonError]

エラーで失敗し-[__NSDictionaryM length]: unrecognized selector sent to instance 0x8ba2200 ます。

json は、 を使用して Python 3.2 によってサーバー上で生成されますjson.dumps。json.dumpsNoneは、json 文字列で Python を null に変換します。

なぜこれが失敗しているのか分かりますか?

4

2 に答える 2

6

はい、NSJSONSerialization処理できnullます。以下を調べます。

NSString *input = @"{ \"value\": null }"; 
NSData *data = [input dataUsingEncoding:NSUTF8StringEncoding];

NSError *error = nil;
id JSONValue = [[NSJSONSerialization JSONObjectWithData:data options:0 error:&error] objectForKey:@"value"];

NSLog(@"(%@), %@ error: %@", [JSONValue class], JSONValue, error);

出力:

2012-07-15 12:06:55.614 TestProj[25329:503] (NSNull)、<null> エラー: (null)

これは、あなたの問題が別の場所にあることを意味jsonDataNSMutableDictionaryますNSData

于 2012-07-15T16:07:55.460 に答える
1

jsonData の割り当てが解除されました。jsonData がまだ有効なポインターであるかどうかを確認します。

于 2012-07-15T16:12:41.383 に答える