创建可读 JSON 字符串的最简单方法是啥?

Posted

技术标签:

【中文标题】创建可读 JSON 字符串的最简单方法是啥?【英文标题】:What is the easiest way to create readable JSON string?创建可读 JSON 字符串的最简单方法是什么? 【发布时间】:2018-01-16 12:15:51 【问题描述】:

我想用新的行和制表符(或空格)绘制格式化的 JSON 字符串。

但是下面的代码产生的字符串只要一行行。

let resultString = String(data: response.data, encoding: .utf8)

有没有创建多行 JSON 字符串的默认方法?

【问题讨论】:

developer.apple.com/documentation/foundation/… 这个developer.apple.com/documentation/foundation/… 用于 Swift 4 JSONEncoder。 【参考方案1】:

您可以使用JSONSerializationprettyPrinted 选项

do 
    let json = try JSONSerialization.jsonObject(with: response.data, options: []) as! [String: AnyObject]
    let formattedJson = try JSONSerialization.data(withJSONObject: json, options:JSONSerialization.WritingOptions.prettyPrinted )
    if let formattedString = String(data: formattedJson, encoding: .utf8) 
        print(formattedString)
    
 catch 
    print("Error: \(error)")

至于 Swift 4 中引入的JSONEncoder,有一个prettyPrinted 选项:

struct Foo: Codable 
    var bar: String
    var baz: Int


let foo = Foo(bar: "gfdfs", baz: 334)

let encoder = JSONEncoder()
encoder.outputFormatting = .prettyPrinted // This makes it formatted as multiline

let data = try encoder.encode(foo)
print(String(data: data, encoding: .utf8)!)

输出是:


  "bar" : "gfdfs",
  "baz" : 334

【讨论】:

以上是关于创建可读 JSON 字符串的最简单方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

将 freemarker 对象呈现为 JSON 的最简单方法是啥?

将 JSON 字符串解析为对象的最简单的 C# 函数是啥? [关闭]

将带有表格数据的 Excel 电子表格转换为 JSON 的最简单方法是啥? [关闭]

识别印度游客的最简单、最轻松的方法是啥?

将任意 GUID 编码为可读 ASCII (33-127) 的最有效方法是啥?

在 jQuery 中每 5 秒调用一次函数的最简单方法是啥? [复制]