Parser Autograph(解析器自动生成)

基于 AutographSynopsis 框架的对象解析器生成实用工具。

用法

准备您的源代码

像这样标记您的模型类和结构体

/**
 EVERYTHING Codable OR Decodable IS CONSIDERED A MODEL
 */
struct Person: Decodable {
    /**
     PROVIDE JSON KEYS FOR EACH PROPERTY:
     @json first_name
     */
    let firstName: String
    
    /**
     USE OPTIONAL PROPERTY TYPES FOR OPTIONAL FIELDS e.g. String?
     USE NON-OPTIONAL TYPES FOR MANDATORY FIELDS     e.g. String
     @json last_name
     */
    let lastName: String?
    
    /**
     FEEL FREE TO USE OTHER ANNOTATED MODELS AS SUB-OBJECTS e.g. Passport
     PROPERTY NAMES ARE USED AS IMPLICIT JSON KEYS:
     @json
     */
    let passport: Passport?
}

Parser Autograph 将为您生成一个通用的 object parser(对象解析器)实用工具类,以及每个模型的 Decodable 扩展。

Object parser(对象解析器)实用工具的使用方式符合您的预期

let parser: ObjectParser<Person> = ObjectParser()
parser.logErrors = true // error logging is disabled by default

let data = """
{ 
    "data": [
        { "first_name": "Jack", "last_name": "Daniel" }, 
        { "first_name": "Jim Beam" }
    ]
}
""".data(using: String.Encoding.utf8)!

let result: [Person] = parser.parse(data: data) // see also parse(any:), parse(dictionary:) and parse(array:)

print(result.count) // two guys here

构建可执行文件

运行 spm_build.command 脚本以便从源代码构建。

您将在 ./build/x86_64-apple-macosx10.10/release 文件夹或类似位置找到您的 ParserAutograph 可执行文件,具体取决于您的操作系统。

将运行脚本构建阶段添加到您的项目中

在其他构建阶段之前运行 ParserAutograph 可执行文件,以便将新生成的源代码纳入流程。 该实用工具接受以下参数

您的脚本可能如下所示

PARSER_AUTOGRAPH_PATH=Utilities/ParserAutograph

if [ -f $PARSER_AUTOGRAPH_PATH ]
then
    echo "ParserAutograph executable found"
else
    osascript -e 'tell app "Xcode" to display dialog "Object parser generator executable not found in \nUtilities/ParserAutograph" buttons {"OK"} with icon caution'
fi

$PARSER_AUTOGRAPH_PATH \
    -input "$PROJECT_NAME/Classes/Model" \
    -output "./$PROJECT_NAME/Generated/Classes"

演示 & 运行测试

使用 spm_resolve.command 加载所有依赖项,并使用 spm_generate_xcodeproj.command 生成一个 Xcode 项目文件。 此外,请确保 Xcode 目标是 macOS。

运行 spm_run_sandbox.command 脚本进行演示 — 它将使用 Sources/Sandbox 作为工作目录来构建和启动 Parser Autograph