如何将此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
转换为dict
或json
。
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。
- 删除
\n
,\
和;
- 用
=
replace=
。 - 为每个string添加双引号
""
(例如,从name
到"name"
)。
再次重新检查,格式有效后,您可以使用@vaibhav答案将NSString
转换为NSDictionary
。 或者看看这里如何反序列化一个JSONstring到一个NSDictionary? (对于iOS 5+)