我厌倦了链接,但那些不适用于我的情况。
任何人都可以建议我如何将此字符串转换为json或字典。
此字符串包含一个包含字符串数组的字典。
NSString *temp=@"{\n name = {\n dob = \"\";\n age = \"61\";\n family = (\n {\n location = location;\n mobile = mobile;\n }\n );\n };\n}";
这里的家庭是一个阵列。
答案 0 :(得分:7)
我得到了解决方案。
首先我尝试了你的代码
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;
};
}
当你将字符串转换为json
时,你必须记住\n must be \"value\"
= must be :
( must be [
number must be 100(or anything else)
对象是一组无序的名称/值对。一个对象开始 用{(左括号)和以}结尾(右括号)。每个名字都是 后跟:(冒号)和名称/值对分开, (逗号)。
数组是有序的值集合。数组以[以[开头] (左支架)并以[]右括号结束)。值是分开的 by,(逗号)。
值可以是双引号中的字符串,也可以是数字,或者是真或 false或null,或对象或数组。这些结构可以 嵌套。
字符串是包含零个或多个Unicode字符的序列 双引号,使用反斜杠转义。角色表示为 单个字符串。字符串非常类似于C或Java 字符串。
除了八进制之外,数字非常类似于C或Java数字 不使用和十六进制格式。
最后
可以在任何一对令牌之间插入空格。除了一些 编码细节,完全描述语言。
我得到了这个有用的数据from this
答案 1 :(得分:1)
使用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);
答案 2 :(得分:0)
首先,您的JSON字符串格式无效。您可以在此处参考以查看正确的格式(http://json.org/)。您可以查看http://jsonviewer.stack.hu/是否有效。
我尝试手动清理你的JSON字符串。
superView
,\n
和\
;
替换为=
。:
(例如,从""
添加到name
)。再次重新检查,格式有效后,您可以使用@vaibhav answer将"name"
转换为NSString
。或者点击此处How do I deserialize a JSON string into an NSDictionary? (For iOS 5+)