Iphone 如何从这个结构中获取数据,JSONKit
下面是位于json.txt的内容Iphone 如何从这个结构中获取数据,JSONKit,iphone,ios,jsonkit,Iphone,Ios,Jsonkit,下面是位于json.txt的内容 { "data": [ { "keyId": 3, "title": "This is a fundraiser 1", "budget": "1000", "users": { "user": [ { "id": "3",
{
"data": [
{
"keyId": 3,
"title": "This is a fundraiser 1",
"budget": "1000",
"users": {
"user": [
{
"id": "3",
"first_name": "A1",
"last_name": "A11",
"is_owner": "false"
},
{
"id": "2",
"first_name": "B1",
"last_name": "B11",
"is_owner": "true"
}
]
}
}
]
}
我要做的是获得idKey
和title
和budget
@implementation Account
@synthesize arr;
-(void)parse {
NSString *filePath = [[NSBundle mainBundle] pathForResource:@"fundraiser_json" ofType:@"txt"];
NSString *jsonString = [NSString stringWithContentsOfFile:filePath encoding:NSUTF8StringEncoding error:nil];
NSDictionary *dict = [jsonString objectFromJSONString];
self.arr = [dict objectForKey:@"data"];
for ( NSDictionary *acc in self.arr ) {
Account *account = [[Account alloc] init];
[account setKeyID: [acc objectForKey:@"keyId"]];
[account setTitle: [acc objectForKey:@"title"]];
[account setBudget: [acc objectForKey:@"budget"]];
}
}
然后,我试图访问用户
,并获取其中每个用户的一些信息,但我做不到
有人能帮我如何访问和获取这些数据吗 当您将字符串转换为JSON对象时,它会生成一个树结构的数据类型,带有可变的字典和数组。这篇文章总结得很好
我假设如果您想访问列表中第一个用户的名字,您需要编写方法调用:
[[[[acc objectForKey:@"users"] objectForKey:@"user"] objectForKey:@"first_name"] objectAtIndex:0];
我不确定我是否理解您的问题或者它是否解决了问题。当您将字符串转换为JSON对象时,它会生成一个树结构的数据类型,带有可变的字典和数组。这篇文章总结得很好
我假设如果您想访问列表中第一个用户的名字,您需要编写方法调用:
[[[[acc objectForKey:@"users"] objectForKey:@"user"] objectForKey:@"first_name"] objectAtIndex:0];
我不确定我是否理解您的问题或它是否解决了问题。访问用户数据的方法与访问帐户数据的方法是相同的。在JSON对象的嵌套结构中,用户是帐户的属性。该对象是一个字典,它有一个属性“user”,即数组。该数组的每个元素都是一个具有四个属性的对象:id、first\u name、last\u name和is\u owner
因此,当解析对象时,它只是一堆嵌套的NSDictionary和NSArray。您可以这样做:
...
for ( NSDictionary *acc in self.arr ) {
NSDictionary *users = (NSDictionary*)[acc objectForKey:@"users"];
NSArray *userArray = (NSArray*)[users objectForKey:@"user"];
for (NSDictionary *user in userArray) {
NSString *id = [user objectForKey:@"id"];
NSString *firstName = [user objectForKey:@"first_name"];
// etc.
}
}
编辑:我写这个答案是为了按照您在问题中的方式解析JSON,但是如果您能够控制这个结构,那么用户属性最好是一个直接包含用户数据字典的数组。也许这就是您最初的意图,也是您在获取数据时遇到困难的原因。访问用户数据的方法与访问帐户数据的方法是相同的。在JSON对象的嵌套结构中,用户是帐户的属性。该对象是一个字典,它有一个属性“user”,即数组。该数组的每个元素都是一个具有四个属性的对象:id、first\u name、last\u name和is\u owner
因此,当解析对象时,它只是一堆嵌套的NSDictionary和NSArray。您可以这样做:
...
for ( NSDictionary *acc in self.arr ) {
NSDictionary *users = (NSDictionary*)[acc objectForKey:@"users"];
NSArray *userArray = (NSArray*)[users objectForKey:@"user"];
for (NSDictionary *user in userArray) {
NSString *id = [user objectForKey:@"id"];
NSString *firstName = [user objectForKey:@"first_name"];
// etc.
}
}
编辑:我写这个答案是为了按照您在问题中的方式解析JSON,但是如果您能够控制这个结构,那么用户属性最好是一个直接包含用户数据字典的数组。也许这就是您最初的意图,也是您在获取数据时遇到困难的原因。您是否假设用户
是一个数组?它不在上面给定的JSON中,它是一个对象(NSDictionary
)。您是否假设users
是一个数组?它不在上面给定的JSON中,它是一个对象(NSDictionary
)。我很难找到用户
,因为我没有注意到用户
也是另一个字典。谢谢你的帮助。我很难找到用户
,因为我没有注意到用户
也是另一本词典。感谢您的帮助..应该是[[[[acc objectForKey:@“users”]objectForKey:@“user”]objectAtIndex:0]objectForKey@“first_name”]]
对,因为“users”是一个数组。谢谢。应该是[[[acc objectForKey:@“users”]objectForKey:@“user”]objectAtIndex:0]objectForKey@“first_name”]]
对,因为“users”是一个数组。非常感谢。