0

次のJSONファイルからtvrage_nameを取得しようとしています。

{
    data: {
           Band of Brothers: {
                              air_by_date: 0,
                              cache: {
                                      banner: 1,
                                      poster: 1
                                      },
                              language: "en",
                              network: "HBO",
                              next_ep_airdate: "",
                              paused: 0,
                              quality: "Any",
                              status: "Ended",
                              tvdbid: 74205,
                              tvrage_id: 2708,
                              tvrage_name: "Band of Brothers"
                              },
           Breaking Bad: {
                              air_by_date: 0,
                              cache: {
                              banner: 1,
                              poster: 1
                              },
                              language: "en",
                              network: "AMC",
                              next_ep_airdate: "2013-07-14",
                              paused: 0,
                              quality: "HD",
                              status: "Continuing",
                              tvdbid: 81189,
                              tvrage_id: 18164,
                              tvrage_name: "Breaking Bad"
                              },
          },
          message: "",
          result: "success"
}

valueForKeyPathにワイルドカードを含める方法はありますか?したがって、valueForKeyPathは次のようになります。data。*。tvrage_name(*はワイルドカードになります)

4

2 に答える 2

0

いいえ。次のようにキー/値をループする必要があります*:

...
NSDictionary *data = [JSON valueForKey:@"data"];
for (NSString *movie in data) {
    NSLog(@"tvrage_name: %@", [[data valueForKey:movie] valueForKey:@"tvrage_name"]);
}
...

*私は安全を期すのが好きなので、常に追加のチェックを行っています。例[JSON isKindOfClass:[NSDictionary class]]など。

それが役に立てば幸い。

于 2013-03-04T15:57:27.430 に答える
0

テレビ番組のエントリ(「メッセージ」と「結果」ではない)だけを含む辞書のコピーを取得した場合は、次のことができます。[[shows allValues] valueForKeyPath:@"tvrage_name"]

allValuesは辞書の配列を提供し、valueForKeyPathは指定されたキーの下に値の配列を提供するため、これは機能するはずです。

(ただし、JSONが期待どおりに構造化されていない場合に備えて、ネットワーク経由でJSONを取得するときに、追加のチェックや強化を行わずにこれを行うことはおそらく悪い考えです)

于 2015-06-02T11:36:25.330 に答える