2014-05-15 38 views
0

我有一个通过JSON收集用户数据的应用程序。将数据放入数组后,我想知道某个键有多少个不同的值,而不是出现多少次。如何从重复的JSON密钥获取值iOS

例子。

我收集用户在网站上组装的餐馆数据。他的JSON数据为流派提供了一个关键:6个比萨场所,4个中国场所和2个他喜欢的墨西哥场所。所以对于流派密钥有三种不同的值,但是它们出现x次的次数。我希望能够看到有多少种不同的流派值,而不是有多少次出现,一旦我获得流派的值,就可以通过NSCountedSet获取。

我在包装我的头时遇到了麻烦,无法在每种可能情况下都进行硬编码。

谢谢!

+0

*请*去json.org和学习JSON语法。它只需要5-10分钟。然后你会明白你有一个JSON“对象”(相当于字典)的数组。一旦理解了结构,遍历数组并访问各个字典是一件简单的事情。 –

+0

我明白这一点。我只是不知道如何为重复x次的密钥获取单个字符串。如果我打算把它放到桌子上,我不希望“披萨”出现6次。 – DookieMan

+0

这个问题与JSON无关 - 这只是“清除”列表的问题。 –

回答

1

假设的格式,如:

[ 
    { 
    "Restaurant":"McDonalds", 
    "Genre":"Vomit" 
    }, 
    { 
    "Restaurant":"Wendys", 
    "Genre":"Gross" 
    }, 
    { 
    "Restaurant":"Chipotle", 
    "Genre":"Delish" 
    }, 
    { 
    "Restaurant":"White Castle", 
    "Genre":"Gross" 
    } 
] 

你可以做到以下几点:

NSArray *jsonArray = [NSJSONSerialization JSONObjectWithData:jsonInDataForm options:kNilOptions error:&error]; 
NSMutableArray *types = [[NSMutableArray alloc] init]; 
for(NSDictionary *restaurant in jsonArray) 
{ 
    if(![types containsObject:[restaurant objectForKey:@"Genre"]]) 
     [types addObject:[restaurant objectForKey:@"Genre"]]; 
} 

int numberOfGenres = [types count]; 
+0

感谢您的回复,措辞不佳。我忘了补充一点,我想把流派放到一个表格视图中。所以会有3个单元格,每个单元格都有一个类型的NSString。我如何获得流派的字符串,但没有得到2份“毛”? – DookieMan

+0

'types'数组已经包含了每个字符串中的一个。 – Stonz2