0

サーバーからJSONを解析しようとしていますが、AFNetworkingを使用すると、パーサーが機能せず、JSONを分離するのではなく、JSON全体が返されます。

JSONをいじってみたところ、この.NETセキュリティ機能に気づきました

 {"d":[JSON INSIDE]}

JSON INSIDE=3つのデータオブジェクトを持つ私のJSONデータ。ここには表示されていません。これにより、デフォルトのJSONパーサーはJSON全体を1として返すだけです。{"d":}を削除すると、複数の部分に正しく解析されます。ただし、サーバーからの戻りデータでdを削除することはできません。AFNetworkingのどこかに、d部分を無視して、括弧内の[JSON]のみを処理するように指示できる場所はありますか?

ありがとう、アラン

更新:「d:」内のデータを取得した後、再解析しようとしていますが、NSJSonSerialization行でSigAbortを取得しています。

    NSString *innerData = [JSON objectForKey:@"d"];
    NSLog(@"Inner Description %@", innerData);

    NSError *jsonParsingError = nil;
    NSDictionary *requestDictionary = [NSJSONSerialization JSONObjectWithData:[innerData dataUsingEncoding:NSUTF8StringEncoding] options:0 error:&jsonParsingError];

解析しているJSONの例:

{"d":[{"__type":"RequestSearchedInfo:#ChangeControlService.DataContracts","Description":"testing prod ","DueDate":"","Priority":{"__type":"ComponentInfo:#ChangeControlService.DataContracts","Id":2,"Name":"Medium"},"RequestId":368,"Requestor":{"__type":"ComponentInfo:#ChangeControlService.DataContracts","Id":5863,"Name":"A Person's Name"},"SentDate":"8\/31\/2012 4:28:11 PM","Status":{"__type":"StatusInfo:#ChangeControlService.DataContracts","Id":27,"IsEndState":false,"Name":"Pending Approval"},"System":{"__type":"ComponentInfo:#ChangeControlService.DataContracts","Id":11,"Name":"Internal-Testing"}},{"__type":"RequestSearchedInfo:#ChangeControlService.DataContracts","Description":"testing prod ","DueDate":"","Priority":{"__type":"ComponentInfo:#ChangeControlService.DataContracts","Id":2,"Name":"Medium"},"RequestId":367,"Requestor":{"__type":"ComponentInfo:#ChangeControlService.DataContracts","Id":5863,"Name":"A Persons Name"},"SentDate":"8\/31\/2012 4:27:40 PM","Status":{"__type":"StatusInfo:#ChangeControlService.DataContracts","Id":2,"IsEndState":false,"Name":"Pending Review"},"System":{"__type":"ComponentInfo:#ChangeControlService.DataContracts","Id":11,"Name":"Internal-Testing"}},{"__type":"RequestSearchedInfo:#ChangeControlService.DataContracts","Description":"testin","DueDate":"08\/03\/2012","Priority":{"__type":"ComponentInfo:#ChangeControlService.DataContracts","Id":3,"Name":"High"},"RequestId":29,"Requestor":{"__type":"ComponentInfo:#ChangeControlService.DataContracts","Id":5863,"Name":"A Persons Name"},"SentDate":"8\/2\/2012 1:58:34 PM","Status":{"__type":"StatusInfo:#ChangeControlService.DataContracts","Id":22,"IsEndState":false,"Name":"Acceptance Certification passed, Request to be Closed"},"System":{"__type":"ComponentInfo:#ChangeControlService.DataContracts","Id":11,"Name":"Internal-Testing"}}]}

ありがとう!

4

1 に答える 1

4

私はちょうどそれを理解しました...応答したすべての人に感謝します。ジェフリーとPropstm

私はただする必要がありました

id innerJSON = [JSON objectForKey:@"d"];

ありがとう!アラン

于 2012-09-20T17:55:24.800 に答える