将 Json NSDictionary 项放入字符串中-目标 C



我对Objective-c有点陌生。我正在尝试解析看起来像这样在单个数组中的 json 数据。

[{"id":"3672","name":"TestName","color":"red","cost":456","date":"0000-00-00 00:00:00"}]

下面是目标 C 部分代码

 FullUrl=[NSString stringWithFormat:@"http://mywebsite.com?user=%@",uservalue];
 NSString *absoluteURl=[NSString string];
 absoluteURl=[self URLEncodeString:FullUrl];
 NSURL *url=[[NSURL alloc]initWithString:absoluteURl];
 NSURLRequest *request = [NSURLRequest requestWithURL:url];
 NSData *data = [NSURLConnection sendSynchronousRequest:request
                                         returningResponse:nil error:nil];
 NSData *jsonData = [data dataUsingEncoding:NSUTF8StringEncoding];
 NSDictionary *parseJson = [NSJSONSerialization JSONObjectWithData:jsonData options:0 error:nil]

现在我想知道如何从parseJson将每个键值放入字符串中,例如,我希望名称值进入"字符串名称"等,

当我在 NSDictionary *parseJson = 行放置一个断点并在 parseJson 上取 curser 时,它显示为

 <__NSCFArray 0x1dddb670>(
{
    name = "TestName";
    id = 3672;
    color = red;
    cost = "456";
    date = "0000-00-00 00:00:00";
}
)

所以这意味着,json解析在我的代码中工作正常?为什么与 json 网络服务项目顺序相比顺序不正确。

JSON 对象是一个字典数组。字典是名称/值对的无序集,因此它们不一定保持与初始化顺序相同的顺序。


所以假设你的反应是这样的:

data:[{"id":"3672","name":"TestName","color":"red","cost":456","date":"0000-00-00 00:00:00"}]

像这样尝试:

NSArray* dataArr = [parseJson objectForKey:@"data"];
for(NSDictionary *obj in dataArr){
NSString* Stringname = [obj objectForKey:@"name"];
NSString* Stringid = [obj objectForKey:@"id"];
NSString* Stringcolor = [obj objectForKey:@"color"];
NSString* Stringcost = [obj objectForKey:@"cost"];
NSString* Stringdate = [obj objectForKey:@"date"];
}

顺序不同,因为您的项目映射在一个无序集合NSDictionary中。

是的,json 解析返回正确的结果。

是的,它工作正常,
JSON 中的元素可以有顺序,
但 NSDictionary 元素不是有序的。

因此,当JSON字符串转换为NSDictionary时,
顺序被打乱。

JSON 对象是一组无序的名称/值对,因此它不会保持与初始化相同的顺序。

NSString* Stringname = [parseJson objectForKey:@"name"];

访问字典中的元素

相关内容

最新更新