(POST请求)从Objective-C中的URL响应中解析JSON元素

时间:2016-05-21 18:46:03

标签: ios objective-c json cocoa parsing

我在从URL响应中解析/返回JSON时遇到问题。这是一个例子

让我说我把它提交给服务器[POST not GET]

firstname=first&lastname=last&age=99

来自服务器的响应是

{  
   "person":{  
      "firstname":"first",
      "lastname":"last",
      "info":{  
         "age":"99"
      }
   }
}

如何检索此信息(某些元素)

让我说我只是希望人们年龄这样,返回字符串应该只是“99” 或者我如何返回姓氏或者只是返回名字,另外一件事是我如何将返回的元素传递给下一个POST请求,而用户不必再次输入它?

如果有人能找到一个很棒的例子:)

谢谢!

2 个答案:

答案 0 :(得分:0)

假设这个数据的名称是json(你称之为响应)。这是一本字典。这意味着它具有键/值对。要访问它,请执行以下操作: 要在字典中获取任何此类信息,您只需要一行代码!!

详细了解某人的名字

[response valueForKeyPath:@"person.firstname"];

获取姓氏:

[response valueForKeyPath:@"person.lastname"];

要老化:

[response valueForKeyPath:@"person.info.age"];

答案 1 :(得分:0)

嗯......如果是我,我会得到NSDictionary,然后查看NSDictionary。

要获得年龄:

您希望获得{ "firstname":"first", "lastname":"last", "info":{ "age":"99" } },所以:

[responseObject objectForKey:@"person"];

执行此操作后,您可能希望获得{ "age":"99" }。为此,您应该使用

[[responseObject objectForKey:@"person"]objectForKey:@"info"];

之后,获得年龄值的最后一步:

[[[responseObject objectForKey:@"person"]objectForKey:@"info"]objectForKey:@"age"];

然后,你有了年龄。

获取名字

通过执行以下操作找到密钥firstname的对象:

[[responseObject objectForKey:@"person"]objectForKey:@"firstname"];

获取姓氏

[[responseObject objectForKey:@"person"]objectForKey:@"lastname"];

......其余的应遵循同样的规则。

如何将其传回POST请求

好吧,POST请求会收到id parameters。这是你放字典的地方。要在不必处理任何异步的情况下正确执行此操作,您必须在GET请求中发出POST请求。例如:

[manager GET:<your GET url>
  parameters:nil
     success:^(AFHTTPRequestOperation *operation, id responseObject) {
         [manager POST:<your POST url>
            parameters:responseObject
               success:^(AFHTTPRequestOperation *operation, id responseObject) { NSLog(@"Success!"); }
               failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Error: %@", error); }];
     } failure:^(AFHTTPRequestOperation *operation, NSError *error) { NSLog(@"Error: %@", error); }];

嗯,那就是它。希望这有助于:)