zoukankan      html  css  js  c++  java
  • Swift开发中 JSON对象/JSON字符串/Data的互转

    本文将介绍Swift开发中常用的转换(JSON对象/JSON字符串/Data之间的互相转换)

    #pragma mark - JSON(对象)----->JSON字符串

    1、原生方法

    //JSON--->data--->JSON字符串
    let data = try? JSONSerialization.data(withJSONObject: json, options: [])  
    let jsonString = String(data: data, encoding: String.Encoding.utf8)

      

    #pragma mark - JSON字符串----->JSON(对象)

    1、原生方法

    //JSON字符串-->data-->JSON对象
    let jsonString = "{"name":"zhangsan","age": 18}"
    let jsonData = jsonString.data(using: String.Encoding.utf8, allowLossyConversion: false) ?? Data()
    guard let json = try? JSONSerialization.jsonObject(with: jsonData, options: .mutableContainers) else {
         return
    }

    2、三方框架(SwiftyJSON: https://github.com/SwiftyJSON/SwiftyJSON)

    //JSON字符串-->data-->JSON对象(测试发现直接使用JSON(jsonString).arrayValue是转化不出来的)
    let data = jsonString.data(using: String.Encoding.utf8, allowLossyConversion: false) ?? Data()
    let json = JSON(data).arrayValue

    #pragma mark - JSON(对象)----->Data

    1、原生

    let data = try? JSONSerialization.data(withJSONObject: json, options: []) 

    #pragma mark - Data----->JSON(对象)

    1、原生方法

    guard let array = try? JSONSerialization.jsonObject(with: data, options: []) as? [[String: AnyObject]] else {//转化失败就返回
         return
    }

    2、三方框架(SwiftyJSON: https://github.com/SwiftyJSON/SwiftyJSON)

    guard let array = JSON(data!).arrayObject as? [[String: AnyObject]] else {//转化失败就返回
        return
    }

    #pragma mark - JSON字符串----->Data

    1、原生方法

    // string字符串按照String.Encoding.utf8这种编码格式转化为data
    if let data = string.data(using: String.Encoding.utf8, allowLossyConversion: false) {
        //.........
    }

    #pragma mark - Data----->JSON字符串

    1、原生方法

    //只要符合String.Encoding.utf8这种编码的data都能转化成功
    let string = NSString(data: data, encoding: String.Encoding.utf8.rawValue)

    2、三方框架(SwiftyJSON: https://github.com/SwiftyJSON/SwiftyJSON)

    //如果转化后的字符串不是JSON类型的字符串,则输出null(注意: 该字符串的控制台输出的格式为JSON格式输出,实际类型是字符串!!!)
    //本质是先转化为JSON对象再转化为dessription!!!
    let jsonString = JSON(jsonData).description

    更多内容--> 博客导航 每周一篇哟!!!

    有任何关于iOS开发的问题!欢迎下方留言!!!或者邮件lieryangios@126.com 虽然我不一定能够解答出来,但是我会请教iOS开发高手!!!解答您的问题!!!

  • 相关阅读:
    C#中对DatagridView部分常用操作
    IIS6架设网站常见问题及症状答疑[转]
    最小化到托盘
    IIS常见问题和错误及其解决方案[转]
    .Net 2.0框架安装失败的解决方案
    Runtime类中Memory
    JVM垃圾回收2
    JVM垃圾回收3——参数详解(转载)
    JVM参数选项(转载)
    MapInfo之格式说明(转载)
  • 原文地址:https://www.cnblogs.com/CoderEYLee/p/Object-C-0021.html
Copyright © 2011-2022 走看看