我在从URL响应中解析/返回JSON时遇到问题。这是一个例子
让我说我把它提交给服务器[POST not GET]
firstname=first&lastname=last&age=99
来自服务器的响应是
{
"person":{
"firstname":"first",
"lastname":"last",
"info":{
"age":"99"
}
}
}
如何检索此信息(某些元素)
让我说我只是希望人们年龄这样,返回字符串应该只是“99” 或者我如何返回姓氏或者只是返回名字,另外一件事是我如何将返回的元素传递给下一个POST请求,而用户不必再次输入它?
如果有人能找到一个很棒的例子:)
谢谢!
答案 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); }];
嗯,那就是它。希望这有助于:)