CrispJSON 1.0.3

CrispJSON 1.0.3

测试已测试
Lang语言 SwiftSwift
许可证 Apache 2
发布上次发布2016年10月
SPM支持 SPM

Terry Stillone 维护。



CrispJSON 1.0.3

  • 作者
  • Terry Stillone


README:CrispJSON v1.0.3

CrispJSON 允许您在使用 Swift 创建简洁且可读的 JSON 解析代码。可扩展且轻量级,它可以解析简单和复杂的 JSON。

平台 OSX、iOS、watchOS、tvOS 和 Linux 软件包
语言 Swift 3.0
来源 Originware
Git 仓库 bitbucket.org/originware/crispjson
要求 Xcode 8+ 或 Linux 的 Swift 3 编译工具链。

示例用法(解析 Google 地点 JSON)

let dataSource = CrispJSON.JDataSource(jsonFromGooglePlaces)
let locations = CrispJSON.JParser(dataSource!).parse({ (json) in

    // Create the MyLocation-s array (where MyLocation is a struct representing a location).
    var results = [MyLocation]()

    json["results"].forArray({ (result) in

        guard let name     = result ->> JValue<String>.value("name")              else { return }
        guard let address  = result ->> JValue<String>.value("formatted_address") else { return }
        let types          = result ->> JValue<[String]>.value("types")           // location types 
                                                                                  // are optional.

        let coordinate = result ->> "geometry" ->> "location"

        guard let lat      = coordinate ->> JValue<Double>.value("lat")           else { return }
        guard let lng      = coordinate ->> JValue<Double>.value("lng")           else { return }

        let location       = MyLocation(name, address, types, lat, lng)

        results.append(location)
    })

    return results
})

以下为解析简化版 Google 地点 JSON

{
    "results" : [
          {
             "name" : "Acme Anvil and Dynamite Company",
             "formatted_address" : "Burbank, California",
             "types" : [
                "store",
                "home_goods_store",
                "funeral_home",
             ],
             "geometry" : {
                "location" : {
                   "lat" : 34.1808,
                   "lng" : -118.3090
                },

          }
    } 
}         

解析

CrispJSON 使用各种解析机制

  • ->> 运算符作用于

    • 字符串 - 匹配特定的对象字典条目。
    • JMatch - 正则表达式匹配对象条目。
    • JValue - 使用泛型和转换为结果类型的值匹配。

  • 迭代器:

    • forArray - 遍历数组条目。
    • forObjectValues - 遍历对象名称/值。
    • forAllValues - 递归遍历所有值,通过名称、数据类型或路径挑选所需的值。

  • 下标:

    • 字符串 - 匹配特定的对象条目。
    • JMatch - 正则表达式匹配对象条目。

有关广泛的用例,包括迭代和递归、对象数据类型检查、使用自定义解析闭包的复杂/重复解析、错误处理(简单的错误值传递和异常处理)、支持的数据源(流和非流)、自定义统计汇总和解析操作的调试跟踪,请参阅 git 仓库中的Playground 源代码

  • 迭代和递归。
  • 对象数据类型检查。
  • 使用自定义解析闭包的复杂/重复解析。
  • 错误处理(简单的错误值传递和异常处理)。
  • 支持的数据源(流和非流)。
  • 自定义统计汇总。
  • 解析操作的调试跟踪。
  • 使用自定义上下文进行复杂数据处理。

其他功能

  • Xcode 项目包含一个用于演示和培训的使用场景 playground(请参阅 git 仓库)。
  • 操作跟踪 - 通过启用跟踪并查看控制台输出来调试解析。
  • 将解析分解为更小的单元,以便重复数据类型。
  • 用户上下文 - 可以将复杂控制、状态和用户数据注入到解析中。
  • Swift 包和 Cocoapods 支持。

集成

  • 直接集成 CrispJSON 源:

    Add the two files under the Sources directory to your source (files: CrispJSON.swift and CrispJSON-support.swift)
    
    • Cocoapods:

      Pod 名称是 “CrispJSON”

    • Swift Package:

      cd CrispJSON swift build

错误报告、跟踪和增强请求。

这些在CrispJSON 问题 页面处理。

授权

源代码包需要根据Apache 2.0授权提供。

请将评论和反馈发送至Terry Stillone @ Originware.com