Ananda:基于yyjson的Swift JSON模型解码库





项目名称:Ananda

项目概述

Ananda是一个Swift语言开发的开源项目,它提供了一种基于yyjson的JSON模型解码方案。该项目允许开发者将JSON数据高效地解码到Swift模型中,支持对特定JSON部分进行解码,并提供了宏工具AnandaMacros以简化模型的创建过程。

主要功能

  • JSON解码:将JSON数据解码到遵循AnandaModel协议的Swift模型中。

  • 自定义路径解码:支持对JSON的特定部分进行解码,例如只解码profile字段。

  • 宏工具:通过AnandaMacros宏工具,可以进一步简化模型的创建和初始化过程。

  • 性能:提供了性能基准测试,以展示Ananda的性能表现。

  • 工具支持:可以使用Ducky Model Editor工具从JSON生成AnandaModel,节省开发者时间。

使用示例

以下是如何使用Ananda解码JSON数据的示例代码:

import Foundation
import Ananda

struct Mastodon: AnandaModel {
    let profile: Profile
    let toots: [Toot]

    init(json: AnandaJSON) {
        profile = .init(json: json.profile)
        toots = json.toots.array().map { .init(json: $0) }
    }
}

extension Mastodon {
    struct Profile: AnandaModel {
        let nickname: String
        let username: String
        let avatarURL: URL

        init(json: AnandaJSON) {
            username = json.username.string()
            nickname = json.nickname.string()
            avatarURL = json.avatar_url.url()
        }
    }
}

extension Mastodon {
    struct Toot: AnandaModel {
        let id: Int
        let content: String
        let createdAt: Date

        init(json: AnandaJSON) {
            id = json.id.int()
            content = json.content.string()
            createdAt = json.created_at.date()
        }
    }
}

解码Mastodon实例:

let mastodon = Mastodon.decode(from: jsonString)

或者

let mastodon = Mastodon.decode(from: jsonData)

宏工具示例

使用AnandaMacros宏工具简化模型创建:

import Foundation
import Ananda
import AnandaMacros

@AnandaInit
struct Mastodon: AnandaModel {
    let profile: Profile
    let toots: [Toot]
}

extension Mastodon {
    @AnandaInit
    struct Profile: AnandaModel {
        let nickname: String
        let username: String
        @AnandaKey("avatar_url")
        let avatarURL: URL
    }
}

extension Mastodon {
    @AnandaInit
    struct Toot: AnandaModel {
        let id: Int
        let content: String
        @AnandaKey("created_at")
        let createdAt: Date
    }
}

性能基准测试

Ananda提供了性能基准测试,以展示其解码性能。

工具支持

可以使用Ducky Model Editor工具从JSON生成AnandaModel,提高开发效率。

项目地址

项目的GitHub地址为:nixzhu/Ananda

或许喜欢

SwiftEasyPop:轻量级SwiftUI自定义弹窗和提示库

SwiftEasyPop是一个轻量级且易于使用的SwiftUI库,用于在Swift应用中显示自定义弹窗和提示,支持iOS 14.0+,兼容暗黑和明亮模式。

最近更新 2024-12-15

Swifticon:从SwiftUI代码生成应用图标的工具

Swifticon是一个开源工具,允许开发者使用SwiftUI代码创建和生成应用图标,支持iOS、iPadOS和watchOS平台。

最近更新 2024-12-09

AnimationStack:SwiftUI视图堆叠动画库

AnimationStack是一个SwiftUI库,允许在视图堆叠中创建动画效果,支持自定义动画和ForEach循环动画,适用于iOS和macOS应用。

最近更新 2024-12-10

热榜

Made with in Shangrao,China By 老雷

Copyright © devler.cn 1987 - Present

赣ICP备19009883号-1