基于 Autograph 和 Synopsis 框架的对象解析器生成实用工具。
像这样标记您的模型类和结构体
/**
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
可执行文件,以便将新生成的源代码纳入流程。 该实用工具接受以下参数
-help
— 打印帮助信息,不执行;-verbose
— 打印额外的调试信息;-input [folder]
— 模型类和结构体所在文件夹的路径;-output [folder]
— 生成的 ObjectParser.swift
文件存放的文件夹的路径。您的脚本可能如下所示
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。