Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/42.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 如何从这个结构中获取数据,JSONKit_Iphone_Ios_Jsonkit - Fatal编程技术网

Iphone 如何从这个结构中获取数据,JSONKit

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",

下面是位于json.txt的内容

{
    "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”是一个数组。非常感谢。