Objective c 将Json NSDictionary项转换为字符串目标C
我对Objective-c有点陌生。我试图解析json数据,它看起来像这样,位于单个数组中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
[{"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。