JSONParserSwift框架,用于Swift的JSON解析器


服务器以黑白格式(即所有字符串)发送所有JSON数据,并且我们努力按照模型类将其类型转换为各自的数据类型。

现在,在服务器数据和我们的代码之间提供了JSONParserSwift框架,可根据我们的模型类将这些字符串神奇地转换为所需的各个数据类型,而无需编写任何代码。

JSONParserSwift可通过CocoaPods获得。 要安装它,只需将以下行添加到您的Podfile中:

 播客“ JSONParserSwift” 

要将任何JSON字符串或字典解析为模型,您必须创建一个类并通过ParsableModel对其进行子类ParsableModel 。 现在,您将需要在模型类中创建属性。 您可以使用与json字符串中的键相同或不同的名称来创建这些属性。 如果声明与json中的键同名的属性,则只需声明属性。 但是,如果要为属性和键使用不同的名称,则需要遵循协议JSONKeyCoder并实现方法func key(for key: String) -> String?

如果您必须解析以下JSON字符串:

  {
   “ responseStatus”:{
     “ statusCode”:101,
     “ message”:“错误消息”
   },
   “ responseData”:{
     “ employeeId”:1002,
     “ employeeName”:“ Demo Employee”,
     “ employeeEmail”:“ abc@def.com”,
     “ employeeDepartment”:“ IT”
   }
 } 

您将需要如下创建模型:

  class BaseResponse:ParsableModel {
   var responseStatus:ResponseStatus?
   var responseData:员工?
 }类别ResponseStatus:ParsableModel {
   var statusCode:NSNumber?
   var讯息:字串?
 }员工类别:ParsableModel {
   var employeeId:NSNumber?
   var employeeName:字符串?
   var employeeEmail:字符串?
   var employeeDepartment:字符串?
 } 

现在要解析JSON,您只需调用以下方法:

 做{
  让baseResponse:BaseResponse =尝试JSONParserSwift.parse(string:jsonString)
   //在此处使用基本响应对象
 } {
  打印(错误)
 } 

该模型可以引用作为ParsableModel子类的其他模型,也可以具有模型Array

要从对象获取JSON字符串,您只需调用JSONParserSwift.getJSON(object: NSObject)方法即可获取JSON。

如果要使用不同的键和属性名称,则JSONKeyCoder协议JSONKeyCoder并实现其方法key(for key: String) -> String? 如下所示:

 类TestModel:JSONKeyCoder {var test:字符串?
    变数:Double = 0
     var boolValue:Bool = false
     var anotherTest:TestModel?
     var阵列:[TestModel]?
    
    公共功能密钥(对于密钥:字符串)->字符串?  {
        切换键{
         case“ boolValue”://属性名称
             return“ bool_value” //响应键
        案例“ anotherTest”:
            返回“ another_key”
        默认:
            返回零
         }
     }
 } 

如果要将模型对象转换为JSON字符串,请调用方法getJSON,如下所示:

  //准备测试模型
让testModel:TestModel = TestModel()
 testModel.test =“ xyz”
 testModel.number = 10.0
 testModel.boolValue = true
    
让anotherTestModel = TestModel()
 anotherTestModel.test =“ abc”
 anotherTestModel.number = 23
 anotherTestModel.boolValue = false
    
 testModel.anotherTest = anotherTestModel
 testModel.array = [anotherTestModel] do {
     //转换成json字符串
    让jsonString =试试JSONParserSwift.getJSON(object:testModel)
     print(“ Json String:\(jsonString)”)
 } {
    打印(错误)
 } 

上面代码的JSON字符串为:

  {
   “ bool_value”:是的,
   “数字”:10,
   “ test”:“ xyz”,
   “数组”:[
     {
       “ bool_value”:否,
       “数字”:23,
       “ test”:“ abc”,
       “数组”:null,
       “ another_key”:null
     }
   ],
   “ another_key”:{
     “ bool_value”:否,
     “数字”:23,
     “ test”:“ abc”,
     “数组”:null,
     “ another_key”:null
   }
  } 

注意:当前,此版本不支持带有Int和Optional类型数组的Optionals。 因此,最好使用NSNumber来处理与数字相关的数据

GitHub链接:https://github.com/mukeshydv/JSONParserSwift