如何在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字符串?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Swift 中将 JSON 转换为数据类型?

如何在 JavaScript 中将 Object 转换为 Array [] 键值对

如何在php中将对象数组转换为键值对

swift 3 将 json 数组解析为键值

我可以在 for 循环中将键值对添加到 NSarray 或字典吗?

如何在 React 中将 JSON 数据显示为表格