JSON或者写字典

发布于 2024-09-07 06:17:24 字数 1957 浏览 2 评论 0原文

将 JSON echo 转换为字典后,出现以下错误:

* Termination app due to uncaught exception 'NSInvalidArgumentException', Reason: '* -[NSMutableArray insertObject:atIndex:]: attempts to insert nil物体位于 0' *** 第一次抛出时的调用堆栈:

这是我的 JSON 反序列化代码,我之前曾在简单的 plist 中使用过此模型。现在我正在发送一个更复杂的回声(带有对象和键)并且它崩溃了。

    NSURL *url = [NSURL URLWithString:@"http://10.0.1.8/~imac/iphone/jsontest.php"];
    NSString *jsonreturn = [[NSString alloc] initWithContentsOfURL:url];

    NSLog(jsonreturn); // Look at the console and you can see what the results are

    NSData *jsonData = [jsonreturn dataUsingEncoding:NSUTF32BigEndianStringEncoding];
    NSError *error = nil;

    NSDictionary * dict = [[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:&error];

    if (dict)
    {
        rowsArray = [dict objectForKey:@"member"];
        [rowsArray retain];
    }


    NSLog(@"Array: %@",rowsArray);
    NSLog(@"count is: %i", [self.rowsArray count]);


    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *choiceR = [documentsDirectory stringByAppendingPathComponent:@"FollowingArray"];
    NSMutableArray *array = [[NSMutableArray alloc] init];

    [array addObject:rowsArray];
    [array writeToFile:choiceR atomically:YES];
    [array release];

    [jsonreturn release];

这是回声的片段:

{
  "member": [{
      "userid": "18",
      "firstname": "Frank",
      "lastname": "Johnson",
      "profile": {
        "school": "7",
        "grade": "12",
        "teacher"
      }
    },
    {
      "userid": "38",
      "firstname": "maggy",
      "lastname": "Johnson",
      "profile": {
        "school": "7",
        "grade": "12",
        "teacher"
      }
    }
  ]
}

我假设我遇到崩溃,因为数组是空的。如果回声导致崩溃,或者 JSON 中存在处理此类键和对象返回的指令,请提供任何想法。

谢谢, 迈克尔

I'm gettin the followig error after converting JSON echo into a dictionary,

* Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '* -[NSMutableArray insertObject:atIndex:]: attempt to insert nil object at 0'
*** Call stack at first throw:

Here is my JSON deserialization code, I've used this model before for a simple plist. Now I'm sending a more complicated echo (with objects and keys) and it's crashing.

    NSURL *url = [NSURL URLWithString:@"http://10.0.1.8/~imac/iphone/jsontest.php"];
    NSString *jsonreturn = [[NSString alloc] initWithContentsOfURL:url];

    NSLog(jsonreturn); // Look at the console and you can see what the results are

    NSData *jsonData = [jsonreturn dataUsingEncoding:NSUTF32BigEndianStringEncoding];
    NSError *error = nil;

    NSDictionary * dict = [[CJSONDeserializer deserializer] deserializeAsDictionary:jsonData error:&error];

    if (dict)
    {
        rowsArray = [dict objectForKey:@"member"];
        [rowsArray retain];
    }


    NSLog(@"Array: %@",rowsArray);
    NSLog(@"count is: %i", [self.rowsArray count]);


    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0];
    NSString *choiceR = [documentsDirectory stringByAppendingPathComponent:@"FollowingArray"];
    NSMutableArray *array = [[NSMutableArray alloc] init];

    [array addObject:rowsArray];
    [array writeToFile:choiceR atomically:YES];
    [array release];

    [jsonreturn release];

Here is a snippet of the echo:

{
  "member": [{
      "userid": "18",
      "firstname": "Frank",
      "lastname": "Johnson",
      "profile": {
        "school": "7",
        "grade": "12",
        "teacher"
      }
    },
    {
      "userid": "38",
      "firstname": "maggy",
      "lastname": "Johnson",
      "profile": {
        "school": "7",
        "grade": "12",
        "teacher"
      }
    }
  ]
}

I'm assuming I'm getting a crash because the array is empty. Any Ideas if the echo is causing the crash or there an instruction in JSON to handle this kind of Keys and Objects return.

Thanks,
Michael

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夜巴黎 2024-09-14 06:17:24

您正在将 NSDictonary 传递给 rowsArray,因为您的 JSON 数据似乎是嵌套在字典中的字典。所以我假设这会导致 rowsArray 为空并在您尝试将其添加到可变数组时导致崩溃。

You are passing a NSDictonary to rowsArray as your JSON data seems to be a dictionary nested within a dictionary. So I would assume that is causing rowsArray to be empty and cause the crash when you try and add it to your mutable arrray.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文