用系统自带的 JSONSerialization 的 .prettyPrinted 格式化打印字典
extension Dictionary where Key: ExpressibleByStringLiteral, Value: Any {
var showJsonString: String {
do {
var dic: [String: Any] = [String: Any]()
for (key, value) in self {
dic["\(key)"] = value
}
let jsonData = try JSONSerialization.data(withJSONObject: dic, options: JSONSerialization.WritingOptions.prettyPrinted)
if let data = NSString(data: jsonData, encoding: String.Encoding.utf8.rawValue) as String? {
return data
} else {
return "{}"
}
} catch {
return "{}"
}
}
}
自己格式化打印字典
extension String {
func jsonFormatPrint() -> String {
if (self.starts(with: "{") || self.starts(with: "[")){
var level = 0
var jsonFormatString = String()
func getLevelStr(level:Int) -> String {
var string = ""
for _ in 0..<level {
string.append("\t")
}
return string
}
for char in self {
if level > 0 && "\n" == jsonFormatString.last {
jsonFormatString.append(getLevelStr(level: level))
}
switch char {
case "{":
fallthrough
case "[":
level += 1
jsonFormatString.append(char)
jsonFormatString.append("\n")
case ",":
jsonFormatString.append(char)
jsonFormatString.append("\n")
case "}":
fallthrough
case "]":
level -= 1;
jsonFormatString.append("\n")
jsonFormatString.append(getLevelStr(level: level));
jsonFormatString.append(char);
break;
default:
jsonFormatString.append(char)
}
}
return jsonFormatString;
}
return self
}
}
网友评论