如何在ios中将此字符串转换为json或字典

时间:2016-10-05 11:54:24

标签: ios objective-c json nsstring

我厌倦了链接,但那些不适用于我的情况。

任何人都可以建议我如何将此字符串转换为json或字典。

此字符串包含一个包含字符串数组的字典。

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

这里的家庭是一个阵列。

3 个答案:

答案 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)
  

对象是一组无序的名称/值对。一个对象开始   用{(左括号)和以}结尾(右括号)。每个名字都是   后跟:(冒号)和名称/值对分开,   (逗号)。

enter image description here

  

数组是有序的值集合。数组以[以[开头]   (左支架)并以[]右括号结束)。值是分开的   by,(逗号)。

enter image description here

  

值可以是双引号中的字符串,也可以是数字,或者是真或   false或null,或对象或数组。这些结构可以   嵌套。

enter image description here

  

字符串是包含零个或多个Unicode字符的序列   双引号,使用反斜杠转义。角色表示为   单个字符串。字符串非常类似于C或Java   字符串。

enter image description here

  

除了八进制之外,数字非常类似于C或Java数字   不使用和十六进制格式。

enter image description here

最后

  

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

我得到了这个有用的数据from this

答案 1 :(得分:1)

使用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);

答案 2 :(得分:0)

首先,您的JSON字符串格式无效。您可以在此处参考以查看正确的格式(http://json.org/)。您可以查看http://jsonviewer.stack.hu/是否有效。

我尝试手动清理你的JSON字符串。

  1. 移除superView\n\
  2. ;替换为=
  3. 为每个字符串添加双引号:(例如,从""添加到name)。
  4. 再次重新检查,格式有效后,您可以使用@vaibhav answer将"name"转换为NSString。或者点击此处How do I deserialize a JSON string into an NSDictionary? (For iOS 5+)