0

我是 Objective-c 编程的新手。

我尝试从我的应用程序发出获取请求。我使用 Unirest for Objective-C 作为 HTTP 库。

我的 API 将返回 JSON 如下:-

{
  "merchant_list": [
    {
      "_id": "543ce2887ca4e102af44a5a8", 
      "address": "MyAddress bla bla bla", 
      "admin": [
        "543ce2887ca4e102af44a5a7"
      ], 
      "card": null, 
      "circle": null, 
      "dollar_ratio": null, 
      "fb": null, 
      "logo": null, 
      "min_spending_VIP": null, 
      "modification_timestamp_utc": 1413276296.0, 
      "name": "Lorem ipsum", 
      "outlets": [], 
      "promotions": [], 
      "referral_ratio": null
    }
  ], 
  "status": "ok"
}

Unirest 库可以将此 JSON 解析为 NSDictionary 或 NSArray,如您所见 body.JSONObject[@"status"] 会给我“ok”值。

但问题是,我无法访问 Mercer_list 中的所有属性。

UNIJsonNode *body = response.body;
if ([body.JSONObject[@"status"] isEqualToString:@"ok"])
{
    NSLog(@"%@", body.JSONObject[@"merchant_list"]);
}

Mercer_list 的 NSLog 值如下:-

2014-10-17 18:07:10.623 MyApp[18567:287513] (
        {
        "_id" = 543ce2887ca4e102af44a5a8;
        address = "MyAddress bla bla bla";
        admin =         (
            543ce2887ca4e102af44a5a7
        );
        card = "<null>";
        circle = "<null>";
        "dollar_ratio" = "<null>";
        fb = "<null>";
        logo = "<null>";
        "min_spending_VIP" = "<null>";
        "modification_timestamp_utc" = 1413276296;
        name = "Lorem ipsum";
        outlets =         (
        );
        promotions =         (
        );
        "referral_ratio" = "<null>";
    }
)

有什么帮助吗?我已经为这个错误花了几个小时。

4

1 回答 1

0

我今天发烧了,但我还在工作。结果我什至无法解决这个简单的错误。

感谢 Rajpal Thakur 强调了这个问题。

现在我可以访问属性:-

if ([body.JSONObject[@"status"] isEqualToString:@"ok"])
    {
        for (id merchant in body.JSONObject[@"merchant_list"])
        {
            for (id key in merchant){
                NSLog(@"key: %@, value: %@ \n", key, [merchant objectForKey:key]);
            }
        }
    }
于 2014-10-17T10:55:06.777 回答