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 回答