0

Web サービスから NSMutableData に json を受け取ります。

これは、TouchJson を使用して NSDictionary に変換されます。

    NSDictionary *dictionary = [[CJSONDeserializer deserializer] deserializeAsDictionary:responseData error:&error];
NSString *strData = [dictionary objectForKey:@"cars"];

次に、その辞書のキーから文字列を取得します。

文字列は以下のようになります

     {
        b = "http://schemas.datacontract.org/";
        car =     (
                    {
                "car_name" = "Honda Civic";
                year = 2011;
                "dealer" = "local honda dealer";
                "bought on" = {
                    nil = 1;
                };
                "license_number" = 1234567;
                status = ReadyToGo;
            }
)};

基本的に、'car' キーに対して 'n' 個のレコードが存在する可能性があります。

上記を使用してNSDataに変換しようとすると

NSData *jsonData = [strData dataUsingEncoding:NSUTF8StringEncoding];

そしてまた

NSData *jsonData = [strData dataUsingEncoding:[NSString defaultCStringEncoding]];

しかし、私は得る

[__NSCFDictionary dataUsingEncoding:]: unrecognized selector sent to instance 0x532bb70

利用可能な他のいくつかのエンコーディングを試しましたが、xcode はまだスローされます。

使用されているエンコーディングを確認するにはどうすればよいですか?

これは、objective-c で json を逆シリアル化する最初の試みです。

ここで何が欠けている/間違っていますか?

ありがとう

4

1 に答える 1

1

ぜんぜんひもじゃないと思うんですけど……。

これに変更してテスト....

NSDictionary *dictionary = [[CJSONDeserializer deserializer] deserializeAsDictionary:responseData error:&error];
NSDictionary *carsDictionary = [dictionary objectForKey:@"cars"];
NSArray *arrayOfCarDictionaries = [carsDictionary objectForKey:@"car"];
于 2011-06-08T16:00:17.353 に答える