Static Badge Static Badge Static Badge Static Badge Static Badge Static Badge Static Badge

用于 Swift 的 FlexiJSONCoder

FlexiJSONCoder 是一个轻量级、灵活且易于使用的库,用于将 JSON 数据解码为 Swift 类型,并提供类型强制转换以及回退支持。它允许您无缝处理来自 JSON 响应的不同数据类型,并自动将它们转换为模型中期望的类型。

当处理 API 响应可能包含单个字段的多种类型(例如,StringIntFloatDouble 等)时,此库尤其有用,从而更容易处理不一致的数据结构。

功能特性

支持的数据类型

版本 0.0.1:此版本支持 StringIntFloatDoubleBool 的强制转换。

示例

下载示例项目

安装

FlexiJSONCoder 可通过 Swift Package Manager 获取

功能特性

Swift Package Manager

File > Swift Packages > Add Package Dependency...
https://github.com/Forgwhiz/FlexiJSONCoder.git

Cocoapods

将以下行添加到您的 Podfile

pod 'FlexiJSONCoder', '~> 0.0.1'

然后运行

pod install

pod update

演示

基本用法

库的用法很简单,可以在下面提供的示例中看到。以下是如何在您的 Swift 模型中使用 FlexiJSONCoder

import FlexiJSONCoder

struct WelcomeModel: Codable {
    let id: String?
    let title: String
    let type: Int?
    let category: Float?
}

let jsonData = """
{
    "id": "123",
    "title": "Welcome",
    "category": "45.67",
    "isActive": "true",
}
""".data(using: .utf8)!

do {
    let jsonData = try JSONSerialization.data(withJSONObject: dictionary, options: [.fragmentsAllowed])
    let decodedModel = try FlexiJSONCoder().decode(WelcomeModel.self, from: jsonData)
    print(decodedModel)  // Outputs: WelcomeModel(id: "123", title: "Welcome", type: 0, category: 45.67, isActive: true)
} catch {
    print("Decoding failed: \(error)")
}

自定义类型的选项

虽然基本功能可以开箱即用地用于 StringIntFloatDoubleBool,但您可以在未来根据需要扩展功能。FlexiJSONCoder 的构建考虑了可扩展性。

支持的类型

命令 描述
String 可以从 StringIntFloatDouble 转换
Int 可以从 StringFloatDouble 转换
Float 可以从 StringIntDouble 转换
Double 可以从 StringIntFloat 转换
Bool 可以从 String ("true"/"false") 或 Int (1 代表 true,0 代表 false) 转换

为未来类型进行自定义

您可以扩展库以支持其他类型(例如 DateURL 等)

许可证

FlexiJSONCoder 在 MIT 许可证下可用。有关更多信息,请参阅 LICENSE 文件。