【问题标题】:YAJL - JSON on iOS/iPhoneYAJL - iOS/iPhone 上的 JSON
【发布时间】:2011-09-06 21:02:47
【问题描述】:

在我的 iPhone 应用程序中,我尝试使用 JSON 库 (YAJL) 创建一个类似于以下格式的 JSON 字符串:

{"user": 
  {"name":"Jon", "username":"jon22", "password":"passw@rd", "email":"jon22@example.com"}
}

但我不知道创建这个的 YAJL 方法。

我尝试了以下方法:

 NSArray *params = [NSArray arrayWithObjects:@"Jon", @"jon22", @"passw@rd", @"jon22@gmail.com", nil];
 NSArray *keys = [NSArray arrayWithObjects:@"name", @"username", @"password", @"email", nil];

 NSDictionary *userDictionary = [NSDictionary dictionaryWithObjects:params forKeys:keys];
 NSString *JSONString = [userDictionary yajl_JSONString];

但是,返回的字符串没有包裹在外部的“用户”中。 如何使用 YAJL 创建这个 json 字符串? 有没有人有这方面的经验???

非常感谢, 布雷特

【问题讨论】:

    标签: iphone objective-c json yajl


    【解决方案1】:

    我不使用 YAJL,但是 SBJSON,这也是 Apple 在 iOS 中使用的...

    无论如何,库的行为是正确的:您没有创建“用户”字典!

    您需要执行以下操作:

    NSDictionary *serialize = [NSDictionary dictionaryWithObject:userDictionary forKey:@"user"];
    

    然后“JSON-ize”这个。

    这是因为当您在 userDictionary 上调用 -yajl_JSONString 时,您正在使用 userDictionary 作为您的“根对象”。如果你想将它包装在另一个字典中,你需要明确地这样做。

    【讨论】:

    • 好的,对。这是我需要知道的。任何想法如何明确地做到这一点?
    • 我告诉过你 :) 创建一个 NSDictionary 对象,就像我写的“serialize”一样,然后调用 [serialize yajl_JSONString],而不是 [userDictionary yajl_JSONString]...就是这样!
    • 啊,我误会了。好的,现在很有意义!非常感谢!
    【解决方案2】:

    我强烈建议您查看 JSONKit https://github.com/johnezang/JSONKit 我使用过许多 JSON 解析器,发现它是最简单的。

    文档也很棒。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-08
      相关资源
      最近更新 更多