“旧式 ASCII 属性 列表”到 Json in Swift
“Old-Style ASCII Property List” to Json in Swift
我有一个如下所示的字符串:
{\n \"account_no\" = \"5675672343244\";\n \"account_kind\" = {\n \".tag\" = test,\n };\n country = US;\n disabled = 0;\n email = \"test@gmail.com\";\n \"email_verified\" = 1;\n \"is_paired\" = 0;\n };\n}"
当它作为描述打印到控制台时,它类似于 NSDictionary。特别是
- 有些字符串在引号中,有些则没有。参见
country = US;\n
- 他们使用
=
的 k-v 符号。例如。 key = value
- 他们使用分隔符
;
不幸的是,我没有创建字符串的原始对象。我只有字符串本身。
我的目标是将其转换为有效的 JSON 字符串表示形式,或者转换回 NSDictionary。应该在 Swift 内完成 5. 到目前为止我没有这样做,有没有人有示例代码可以帮助?
NSDictionary
的描述产生一个 “Old-Style ASCII Property List”, and PropertyListSerialization
可用于将其转换回对象。
请注意格式不明确。例如,1234
可以是数字,也可以是仅由十进制数字组成的字符串。所以不能保证得到准确的结果。
示例:
let desc = "{\n \"account_no\" = \"5675672343244\";\n \"account_kind\" = {\n \".tag\" = test;\n };\n country = US;\n disabled = 0;\n email = \"test@gmail.com\";\n \"email_verified\" = 1;\n \"is_paired\" = 0;\n}"
do {
let data = Data(desc.utf8)
if let dict = try PropertyListSerialization.propertyList(from: data, format: nil) as? NSDictionary {
let json = try JSONSerialization.data(withJSONObject: dict, options: .prettyPrinted)
print(String(data: json, encoding: .utf8)!)
} else {
print("not a dictionary")
}
} catch {
print("not a valid property list:", error)
}
输出:
{
"country" : "US",
"email_verified" : "1",
"is_paired" : "0",
"account_no" : "5675672343244",
"email" : "test@gmail.com",
"disabled" : "0",
"account_kind" : {
".tag" : "test"
}
}
(我必须“修复”描述字符串以使其成为有效的 属性 列表:“test”后跟一个逗号而不是分号,并且有一个不平衡的 }
在字符串的末尾。)
我有一个如下所示的字符串:
{\n \"account_no\" = \"5675672343244\";\n \"account_kind\" = {\n \".tag\" = test,\n };\n country = US;\n disabled = 0;\n email = \"test@gmail.com\";\n \"email_verified\" = 1;\n \"is_paired\" = 0;\n };\n}"
当它作为描述打印到控制台时,它类似于 NSDictionary。特别是
- 有些字符串在引号中,有些则没有。参见
country = US;\n
- 他们使用
=
的 k-v 符号。例如。key = value
- 他们使用分隔符
;
不幸的是,我没有创建字符串的原始对象。我只有字符串本身。
我的目标是将其转换为有效的 JSON 字符串表示形式,或者转换回 NSDictionary。应该在 Swift 内完成 5. 到目前为止我没有这样做,有没有人有示例代码可以帮助?
NSDictionary
的描述产生一个 “Old-Style ASCII Property List”, and PropertyListSerialization
可用于将其转换回对象。
请注意格式不明确。例如,1234
可以是数字,也可以是仅由十进制数字组成的字符串。所以不能保证得到准确的结果。
示例:
let desc = "{\n \"account_no\" = \"5675672343244\";\n \"account_kind\" = {\n \".tag\" = test;\n };\n country = US;\n disabled = 0;\n email = \"test@gmail.com\";\n \"email_verified\" = 1;\n \"is_paired\" = 0;\n}"
do {
let data = Data(desc.utf8)
if let dict = try PropertyListSerialization.propertyList(from: data, format: nil) as? NSDictionary {
let json = try JSONSerialization.data(withJSONObject: dict, options: .prettyPrinted)
print(String(data: json, encoding: .utf8)!)
} else {
print("not a dictionary")
}
} catch {
print("not a valid property list:", error)
}
输出:
{ "country" : "US", "email_verified" : "1", "is_paired" : "0", "account_no" : "5675672343244", "email" : "test@gmail.com", "disabled" : "0", "account_kind" : { ".tag" : "test" } }
(我必须“修复”描述字符串以使其成为有效的 属性 列表:“test”后跟一个逗号而不是分号,并且有一个不平衡的 }
在字符串的末尾。)