swift 字典转化jsonstring排序sort

有个需求需要把字典转成Json字符串,但是Json字符串Key值,按照ASCII码排序

一、系统自带JSONString方式,无法做到排序

let data :NSData! =try? JSONSerialization.data(withJSONObject: dictionary, options: [])asNSData!

let JSONString = NSString(data:dataasData,encoding: String.Encoding.utf8.rawValue)

return JSONString!asString

二、iOS11 开始支持排序参数传入
if #available(iOS 11.0, *) {

let data : NSData! = try? JSONSerialization.data(withJSONObject: dictionary, options: JSONSerialization.WritingOptions.sortedKeys) as NSData!

let JSONString = NSString(data:data as Data,encoding: String.Encoding.utf8.rawValue)

return JSONString! as String

}

WritingOptions中包含排序

三、为了适配各种版本,自定义拼接

func creatJsonString(dict: [String:Any]) ->String{

if(!JSONSerialization.isValidJSONObject(dict)) {

print("无法解析出JSONString")

return""

}

var namedPaird = [String]()

let sortedKeysAndValues = dict.sorted{$0.0< $1.0}

for(key, value) in sortedKeysAndValues {

if value is [String:Any] {

namedPaird.append("\"\(key)\":\(self.creatJsonString(dict: valueas! [String:Any]))")

}else if value is [Any] {

namedPaird.append("\"\(key)\":\(value)")

}else{

namedPaird.append("\"\(key)\":\"\(value)\"")

}

}

let returnString = namedPaird.joined(separator:",")

return"{\(returnString)}"

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 就在昨天,老妈和我微信视频,说:听说你买了一辆车。可不是吗?我终于买了一辆自行车。哈哈哈哈,两人不约大笑。 我买了...
    木木木侠阅读 1,000评论 0 4
  • 金灿灿的玉米囤满农家的庭院 红通通的小枣晾晒在屋前院后 黑黝黝的豆儿装好袋子聚在屋檐下 丰收!今年的秋,农家院落显...
    丰盈仓廪阅读 884评论 0 0
  • 寒风凛冽,寒气袭人,枯草萧疏,绿色尽失,今年的冬天如此苍白凄凉且冷漠. M点燃一支烟,吞云吐雾起来,一圈圈的烟雾,...
    幽谷泉涌阅读 902评论 0 1