Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c 将Json NSDictionary项转换为字符串目标C_Objective C_Json_Xcode - Fatal编程技术网

Objective c 将Json NSDictionary项转换为字符串目标C

Objective c 将Json NSDictionary项转换为字符串目标C,objective-c,json,xcode,Objective C,Json,Xcode,我对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

我对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?将每个键值转换成字符串?。例如,我希望将名称值转换为“Stringname”等

当我在NSDictionary*parseJson=行上放置一个断点并将游标置于parseJson之上时,它显示如下

 <__NSCFArray 0x1dddb670>(
{
    name = "TestName";
    id = 3672;
    color = red;
    cost = "456";
    date = "0000-00-00 00:00:00";
}
)
(
{
name=“TestName”;
id=3672;
颜色=红色;
成本=“456”;
日期=“0000-00-00:00:00”;
}
)

这意味着,json解析在我的代码中运行良好?为什么与json webservice项目顺序相比,顺序不正确

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

使用


要访问字典中的元素,JSON对象是一组无序的名称/值对,因此它不会保持与初始化时相同的顺序

使用


要访问字典

中的元素,顺序不同,因为项目映射在一个无序的集合中


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

顺序不一样,因为您的项映射在一个无序集合的
NSDictionary


是的,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"];
}

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"];
}
是的,它工作得很好,
JSON中的元素可以有顺序,
但NSDictionary元素是不有序的

因此,当JSON字符串转换为NSDictionary时,
秩序混乱。

是的,运作良好,
JSON中的元素可以有顺序,
但NSDictionary元素是不有序的

因此,当JSON字符串转换为NSDictionary时,

顺序被打乱。

我没有编辑它:p我在评论中说这不起作用,因为parseJson是arrayYeah正确的,objectForKey是NSDictionary专用的,Xcode显示警告说它不适用于NSArray。我没有编辑它:p我在评论中说这不起作用,因为parseJson是arrayYeah正确的,objectForKey是特定于NSDictionary的,Xcode显示警告说它不适用于NSArray。