【问题标题】:how to convert this string to json or dictionary in ios如何在ios中将此字符串转换为json或字典
【发布时间】:2017-02-13 20:33:39
【问题描述】:

我厌倦了链接,但在我的情况下这些链接不起作用。

谁能建议我如何将此字符串转换为 json 或字典。

这个字符串有一个带有字符串数组的字典。

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

这里的family是一个数组。

【问题讨论】:

标签: ios objective-c json nsstring


【解决方案1】:

我找到了解决方案。

首先我尝试了你的代码

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 ,(逗号)。

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

字符串是由零个或多个 Unicode 字符组成的序列,包含在 双引号,使用反斜杠转义。一个字符表示为 单个字符串。字符串非常像 C 或 Java 字符串。

数字与 C 或 Java 数字非常相似,不同之处在于八进制 不使用十六进制格式。

终于

可以在任何一对标记之间插入空格。除了少数 编码细节,完全描述语言。

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

【讨论】:

  • 拜托,你能解释一下为什么'family'键值对打印在'name'之前,因为你可以看到'name'在JSON字符串中的'family'之前?我之所以这样问,是因为我的数据的键为 Unicode 字符(印地语)时遇到了这个问题。转换为 JSON 后,键正在更改它们的顺序。我还注意到他们正在根据他们的 Unicode 进行排序。
【解决方案2】:

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

【讨论】:

    【解决方案3】:

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

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

    1. 删除 \n、\ 和 ;
    2. 将= 替换为:。
    3. 为每个字符串添加双引号 ""(例如,从 name 到 "name")。

    再次检查,格式有效后,您可以使用@vaibhav 答案将NSString 转换为NSDictionary。或者看这里How do I deserialize a JSON string into an NSDictionary? (For iOS 5+)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-06
      • 1970-01-01
      • 2017-08-11
      • 2011-08-01
      • 1970-01-01
      • 2017-04-16
      • 1970-01-01
      相关资源
      最近更新 更多