如何在Swift中将键值对分解为JSON字符串?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Swift中将键值对分解为JSON字符串?相关的知识,希望对你有一定的参考价值。
给出一个键值对,例如“ a.b.c.d” =“ e”,如何获得以下JSON字符串:
"a":
"b":
"c":
"d": "e"
答案
您可以构建字典层次结构,然后将其转换为JSON字符串。
给出一个
- 由点(
.
)分隔的路径元素列表组成的键 - 和一个值,
您可以如下构建字典对象:
var jsonObject: [String: Any]
var path = key.split(separator: ".").map String($0)
let lastKey = path.popLast()!
jsonObject = [lastKey: value]
for element in path.reversed()
jsonObject = [element: jsonObject]
然后,您可以按如下所示获得漂亮的印刷版本(如上例所示:
let jsonData = try! JSONSerialization.data(withJSONObject: jsonObject, options: [.prettyPrinted])
let encoded = String(data: jsonData, encoding: .utf8)!
要获得紧凑(非漂亮)版本,请忽略.prettyPrinted
选项(但保留数组括号)。>
let jsonData = try! JSONSerialization.data(withJSONObject: jsonObject, options: []) let encoded = String(data: jsonData, encoding: .utf8)!
这里是打包成函数的全部内容:
func jsonFromKeyValue(key: String, value: String) -> String var jsonObject: [String: Any] var path = key.split(separator: ".").map String($0) let lastKey = path.popLast()! jsonObject = [lastKey: value] for element in path.reversed() jsonObject = [element: jsonObject] let jsonData = try! JSONSerialization.data(withJSONObject: jsonObject, options: [.prettyPrinted]) let encoded = String(data: jsonData, encoding: .utf8)! return encoded
尝试使用:
let jsonObject = jsonFromKeyValue(key: "a.b.c.d", value: "e")
print(jsonObject)
以上是关于如何在Swift中将键值对分解为JSON字符串?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 JavaScript 中将 Object 转换为 Array [] 键值对