-1

NSJSONSerialization で YELP1 Json を解析し、NSDictionary でデータにアクセスするのはかなりうまくいっていました。ただし、応答には矛盾があると考えました。

一部のキーは で囲まれています"。ほとんどの場合、_

応答の一部:

(
        {
        address1 = "xxx";
        address2 = "";
        address3 = "";
        "avg_rating" = 5;
        city = "Chicago";
        country = USA;
        "country_code" = US;

から得られました
[[NSString alloc] initWithData:self.recievedData encoding:NSUTF8StringEncoding];

これは、括弧内にキーがないというドキュメントと矛盾しています。 http://www.yelp.com/developers/documentation/search_api

どうやら、括弧は、値のタイプではなく、何らかの理由でキー値の「_」を示しています。を含む各キーを角かっこで囲みます_。値は文字列でも整数でも何でもかまいません。

avg_rating などのフィールドへのアクセス

[dict objectForKey:@"avg_rating"];

で失敗しますNSInvalidArgumentException

ながら動作し[dict objectForKey:@"country"];ます。

したがって、返される値に関する NSDictionary / NSLog の問題ではなく、dict オブジェクトに送信されたキーに関する問題だとは思いません。それとも、JSON の解析中ですか? しかし、作業コードの一部で私が間違っていることを証明してください... :)

何か案は?ありがとう、エル

編集:質問が十分に明確になった可能性があるため、編集しました。
Edit2: 実際には、ここで NSNumber が返されるということでした。これらの "" について混乱しました。

4

1 に答える 1

1

応答の一部:

いいえ、それは応答の一部ではありません。これは、 JSONNSDictionaryではない結果の説明です。

NSLog([dict objectForKey:@"avg_rating"]);で失敗しますがNSInvalidArgumentException、うまくいきますNSLog([dict objectForKey:@"country"]);

もちろん、NSLog()魔法じゃないから。最初の引数として (フォーマット) 文字列を想定しているため、フィードするオブジェクトが である場合はNSString正常に動作します (countryは文字列であると思いますavg_rating) NSNumber。 't (インスタンスにメッセージNSStringを送信しようとしますがNSNumber、明らかに失敗します)。

したがって、JSON とその JSON から生成された の説明の違いを理解してください。NSDictionary

于 2013-02-10T07:34:44.203 に答える