LABParser 0.2

LABParser 0.2

测试已测试
Lang语言 SwiftSwift
许可 MIT
发布最后发布2017年12月
SwiftSwift 版本4.0
SPM支持 SPM

Leonardo Armero Barbosa 维护。



  • Leonardo Armero Barbosa

LABParser

Swift 4 中双向 JSON-Dictionary/Object 解析器开发。

需求安装使用贡献作者许可

需求

  • iOS 10.0+
  • Xcode 9.0+
  • Swift 4.0+

安装

CocoaPods

如果尚未可用,请安装 CocoaPods

$ [sudo] gem install cocoapods
$ pod setup

如果您已有 cocoapods,请更新它

$ pod update

前往您的 Xcode 项目目录,创建和编辑您的 Podfile 并添加 LabParser

$ cd /path/to/MyProject
$ nano Podfile

platform :ios, '11.0'
use_frameworks!

target 'MyProject' do
 pod 'LABParser', '~> 0.2'
end

将其安装到您的项目中

$ pod install

从 .xcworkspace 文件(而不是常用的项目文件)打开您的项目

$ open MyProject.xcworkspace

现在您可以在文件中导入 LABParser 框架。

使用说明

LABParser 是 Swift 4 中双向 JSON-Dictionary/Object 解析器开发。

为了使用此 pod,您需要将 LABParser 导入到您的模型对象中。

LABParser 通过一个名为 ParcelableModel 的类进行操作。为了正确使用 LABParser,您必须从此类继承所有您的模型。我们鼓励您创建一个 BaseModel 类来导入 LABParser 到其中。此 BaseModel 类必须是开放的,以允许继承。

import Foundation
import LABParser

open class BaseModel: ParcelableModel {

}

现在创建您的模型类。

import Foundation

class User: BaseModel {

	var email: String!
	var password: String!

	required init(){
		super.init()
	}

	init(email: String, password: String) {
		super.init()
		self.email = email
		self.password = password
	}
}

所以,假设您在名为 data 的变量中收到一个这样的 JSON User 对象

{
	"email": "[email protected]",
	"password": "aom123"
}

您可以用以下方式将其转换为您的 swift 模型

let user = User()
do {
	user.fromJSON(data)	
} catch {
	print("The string isn't a valid JSON")
}

必须使用 try catch 块来进行错误处理。

如果您收到 User 对象的字典表示,您可以解析为

let user = User()
user.fromDictionary(data)

然后您可以使用对象的属性

print("Email user is: /(user.email) and password: /(user.password)")

如果您收到一个字典数组,您可以解析为

let userArray: [User] = User.fromDictionaryArray(data)

注意,您的模型属性必须与 JSON/Dictionary 键名完全相同。然而,如果您有任何不与模型匹配的键,您可以覆盖函数 'customKeysName',创建一个自定义键的字典并返回它

override func customKeysName() -> [String: String]? {
	return ["email": "user_email",
			"password": "U.Password"]
}

要从模型创建字典,您的 ParcelableModel 必须初始化

let user = User(email: "[email protected]", password: "aom123")

因此,创建字典很简单

let userDictionary: [String: AnyObject] = user.toDictionary()

要创建一个从模型来的 JSON 字符串

do {
    let jsonString = try user.toJSON()
    print("toJSON: " + jsonString)
} catch {
    print("The model can't be parsed to JSON format")
}

要考虑

  • 所有您的模型都必须继承自 ParcelableModel。要仅在类中导入,您可以创建一个 BaseModel 并让所有您的模型从 BaseModel 继承。
  • 您的属性模型必须与 JSON/Dictionary 键名完全相同或您必须在模型类中覆盖函数 'customKeysName'。
  • 如果您的属性类型为 Int、Float 或 Double,则必须将这些类型改为 NSNumber。
  • 如果你有类型为 BOOL 的属性,必须在声明时进行初始化。你也可以将其转换为 NSNumber。
  • LABParser 可以解析 ParcelableModel 类型对象的属性,如下
import Foundation

class Token: BaseModel {

	var defaultToken: String!
	var attempts: NSNumber?
	var refreshToken: String!

	required init(){
		super.init()
	}
}
import Foundation

class User: BaseModel {

	var email: String!
	var password: String!
	var token: Token!

	required init(){
		super.init()
	}
}
  • LABParser 可以解析 ParcelableModel 类型对象的数组,如下
{
	"email": "[email protected]",
	"password": "aom123",
	"offices": [
		{
			"name": "LAB 1",
			"address": "Street 1"
		}, 
		{
			"name": "LAB 2",
			"address": "Street 2"
		}
	]
}

使用属性模型

import Foundation

class Office: BaseModel {

	var name: String!
	var address: String!

	required init(){
		super.init()
	}
}
import Foundation

class User: BaseModel {

	var email: String!
	var password: String!
	var offices: [Office]!

	required init(){
		super.init()
	}
}

贡献

此库基于 ParceSwift 库创建。如果你需要 Swift 1、2 或 3 的解析器,请访问 https://github.com/sebastian989/ParceSwift
欢迎所有贡献。请与我们联系。

作者

Leonardo Armero Barbosa,
Sebastián Gómez Osorio

许可 (MIT)

MIT 许可协议

版权 (c) 2017 Leonardo Armero Barbosa

在此特此免费授权任何获得本软件及其相关文档文件(“软件”)副本的人员,无限制地处理该软件,包括但不限于使用、复制、修改、合并、发布、分发、再许可或出售软件的副本,并允许向软件提供方提供该软件的人员执行上述操作,前提是必须遵守以下条件
上述版权声明和本许可声明应包含在软件的所有副本或实质部分中。
该软件按“原样”提供,不提供任何明示或暗示的保证,包括但不限于适销性、针对特定用途适用性以及非侵权性。在任何情况下,作者或版权所有者都不应对任何索赔、损害或其他责任承担任何责任,无论是在合同、侵权或其他责任,因软件或软件的使用或其他操作而导致。
本软件。
授权
在此特此授予,免费向任何获得本软件及其相关文档文件(“软件”)副本的人员

未经授权不得将软件用于任何商业目的,除非事先获得有关人员的明确书面同意。
的副本

或实质性部分
软件。
允许他人根据本协议的条款使用或以其他方式执行 Software,前提是所有软件的副本或实质性部分均包含上述版权声明和本许可声明。
上述版权声明和本许可声明
软件的所有副本或实质性部分。
所有权利保留。
未经本版权所有者和/或许可方的明确书面同意,不得以任何形式将本软件的部分或全部副本或实质性部分出租、出售、发放或以其他形式提供给第三方。