如何将此string转换为json或ios中的字典

我厌倦了链接,但这些都不适合我的情况。

任何人都可以build议我如何将此string转换为JSON或字典。

这个string有一个string数组的字典。

NSString *temp=@"{\n name = {\n dob = \"\";\n age = \"61\";\n family = (\n {\n location = location;\n mobile = mobile;\n }\n );\n };\n}"; 

这里的家庭是一个arrays。

我得到了解决scheme。

首先我尝试了你的代码

 NSString *temp=@"{\n name = {\n dob = \"\";\n age = \"61\";\n family = (\n {\n location = location;\n mobile = mobile;\n }\n );\n };\n}"; 

我的输出结果是

 null 

然后我改变了JSON格式。

所以现在你的代码应该是

 NSString *strJson=@"{\"name\":{\"dob\":88,\"age\":61},\"family\" : [{\"location\":\"us\",\"mobile\":\"mobile\"}]}"; NSData *data = [strJson dataUsingEncoding:NSUTF8StringEncoding]; id jsonOutput = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; NSLog(@"%@",jsonOutput); 

打印结果是

 { family = ( { location = us; mobile = mobile; } ); name = { age = 61; dob = 88; }; } 

你必须记住,当你把string转换成JSON

 \n must be \"value\" = must be : ( must be [ number must be 100(or anything else) 

一个对象是一组无名的名称/值对。 一个对象以{(左大括号)开始并以}(右大括号)结束。 每个名称后跟:(冒号),名称/值对由(逗号)分隔。

在这里输入图像说明

数组是值的有序集合。 一个数组以[(左括号)开头,结尾为](右括号)。 值由(逗号)分隔。

在这里输入图像说明

值可以是双引号或数字,或者真或假或空,或对象或数组中的string。 这些结构可以嵌套。

在这里输入图像说明

string是一个零个或多个Unicode字符的序列,用双引号括起来,使用反斜杠转义符。 一个字符被表示为一个string。 一个string非常像C或Javastring。

在这里输入图像说明

一个数字非常类似于C或Java数字,只是不使用八进制和hex格式。

在这里输入图像说明

最后

可以在任何一对令牌之间插入空格。 除了一些编码细节,这完全描述了语言。

我从中得到了这个有用的数据

使用NSJSONSerialization类及其方法JSONObjectWithData可以将string转换为dictjson

 NSData *data = [yourString dataUsingEncoding:NSUTF8StringEncoding]; NSDictionary *json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; // OR id json = [NSJSONSerialization JSONObjectWithData:data options:0 error:nil]; NSLog(@"string: %@",json); 

首先你的JSONstring格式无效。 你可以参考这里看到正确的格式( http://json.org/ )。 你可以检查http://jsonviewer.stack.hu/看看它是否工作。

我试图手动清理你的JSONstring。

  1. 删除\n\;
  2. =replace=
  3. 为每个string添加双引号"" (例如,从name"name" )。

再次重新检查,格式有效后,您可以使用@vaibhav答案将NSString转换为NSDictionary 。 或者看看这里如何反序列化一个JSONstring到一个NSDictionary? (对于iOS 5+)