【问题标题】:How to read Java generated JSON data from Objective C?如何从 Objective C 读取 Java 生成的 JSON 数据?
【发布时间】:2013-07-26 00:39:47
【问题描述】:

我已从 Java Restful WebServices 生成 JSON 数据,我需要将其放入 Objective C 代码中。如何使用 JSON 数据并集成到 Objective C? IDE 已经生成了本地 URL,如何在其他机器上使用生成的 JSON 数据。谢谢

【问题讨论】:

  • 值得一提的一点,只要你的web服务产生有效的JSON,就不用担心服务器是否在执行Java代码、C#、node.js等。
  • 感谢您的回复。唯一的问题是如何将生成的 JSON 数据调用到 Objective C。因为我在 JAVA 上工作,而我的同事在 Objective C 上工作。我们在 Objective C 中实现有问题。我在 PC 上工作,他是在 Mac 上工作。

标签: objective-c json


【解决方案1】:

查看 NSURLConnection 以从您的 Web 服务中检索 JSON。然后就可以使用 NSJSONSerialization 来解析了。

【讨论】:

    【解决方案2】:

    使用任何可用的 JSON 解析器。这个问题比较了其中几个:Comparison of JSON Parser for Objective-C (JSON Framework, YAJL, TouchJSON, etc)

    【讨论】:

    • 非常感谢大家。我真的很感谢你的回答。请继续发帖。
    【解决方案3】:

    您可以从 URL 请求NSData,然后使用NSJSONSerialization 来解释它。例如:

    NSURL *url = [NSURL URLWithString:@"http://www.put.your.url.here/test.json"];
    NSURLRequest *request = [NSURLRequest requestWithURL:url];
    NSOperationQueue *queue = [[NSOperationQueue alloc] init];
    [NSURLConnection sendAsynchronousRequest:request queue:queue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
        if (error) {
            NSLog(@"%s: sendAsynchronousRequest error: %@", __FUNCTION__, error);
            return;
        }
    
        NSError *jsonError = nil;
        NSArray *results = [NSJSONSerialization JSONObjectWithData:data options:0 error:&jsonError];
        if (jsonError) {
            NSLog(@"%s: JSONObjectWithData error: %@", __FUNCTION__, jsonError);
            return;
        }
    
        // now you can use the array/dictionary you got from JSONObjectWithData; I'll just log it
    
        NSLog(@"results = %@", results);
    }];
    

    显然,假设 JSON 表示一个数组。如果它是一本字典,您可以将 NSArray 引用替换为 NSDictionary 引用。但希望这能说明这个想法。

    【讨论】:

    • 我在 login.java 中使用过 restful webservice 和我的程序,但是它会生成 json 数据。 put.your.url.here 是我的本地主机还是我需要在我的服务器中托管?我没有 test.json。我的一个是Java。你能说清楚吗?谢谢你..
    • @Chhewang URL 应该是为您的 Web 服务提供服务的任何主机。如果该 Web 服务当前在您在模拟器上运行应用程序的同一台计算机上运行,​​您可以使用localhost,但使用本地网络将解析为的主机名可能更谨慎您的开发机器,以便您还可以在连接到您的 wifi 网络的设备上进行测试。
    • @Chhewang 如果此网络服务在您的 Mac 上运行,您可以转到“系统偏好设置”-“共享”,它会显示您的计算机在本地网络上的名称。例如。我的说“Firstname-Lastname's-iMac.local”,所以我的 wifi 网络上的设备可以通过 "http://Firstname-Lastname's-iMac.local/sample.json" 或其他方式访问它。这样,我 wifi 网络上的设备就可以访问我本地网络上的 Mac。
    • 非常感谢罗。我仍在努力。完成后我会通知你。
    • 嗨 Rob,我仍然无法从远程计算机连接。我使用了你提到的路径。你有什么其他的建议。谢谢...
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-25
    相关资源
    最近更新 更多