杰森·斯克马·沃克
一个访问 JSON Schema 文件中所有计划对象的系统 ,并在访问所有当前之前和(或)之后重新调用 schemaobject's subschemas. 中国植物物种信息数据库.
目前,有许多词汇需要选择,必须 用于两个行走功能。 作为 词汇概念 在JSON Schema定稿 草案08,此软件包将被重新修改以直接支持它.
行者们
两个行走者接受一个或两个回调功能,但不同 稍微在他们的行为。 在这两种情况下,都有"路径" 或“ parentPath” 概念是 JSON 属性的数组 名称或数组索引随即到达当前计划.
请注意,行走者召回会修改 计划结构 到位,所以如果需要的话,复制一份副本 原始的也一样.
schemaWalk(schema, preFunc, postFunc, vocabulary)
这只叫前Func召回(如果有的话),
电话 subschemaWalk 空父路径 [],以及
然后调用后Func召回.
subschemaWalk(scheam, preFunc, postFunc, parentPath, vocabulary)
有时从文件的某个地方开始是有用的,
哪个 subschemaWalk 通过走父路径完成 .
连接电话也是这样开始的
行走 - 计算每个后续呼叫的母路径
散步时.
特别是,以不同方式处理根子方案很常见,
所以打电话 subschemaWalk 以空取为底端的尖端
父路径 [] 允许跳过根图.
回电
无论是 preFunc 或者说 postFunc 电话可以是无效的,也可以是两个都可以通过同一行走. 他们预计将采取以下行动:
作为位置参数 :
- 正在处理的 schema 对象( 或布尔)
- 其父子计划路径
- 父方案对象( 如果有)
- 从 schema 文档根到父端的路径
路径是类似于 JSON 指针。考虑到 ["foo", 42] 作为从根到母对象的路径,以及 ["bar"] 作为从母对象到正在处理的计划的路径,等同 贾森 指针碎片 对于父母来说 "#/foo/42而对于正在处理的计划来说 #/foo/42/bar。 。 。 .
同等数额 相对 JSON 指针 从父母到正在处理的计划 0/bar。 。 。 .
空路径作为空数组表示 []。对于根部的指针,这相当于 # 作为JSON指针碎片.
对于从母体到正在处理的策略的空路径(意味着两者是相同的,这发生在根策略上),这相当于 0 作为相对的JSON指针.
词汇
getVocabulary(schema, defaultVocabulary) 这返回基于 schema 的行走者词汇对象 $schema 关键字,或返回默认值,如果 $schema 不存在或不承认。 如果没有提供当前默认值 JSON超计划草案。 。 。 .
一旦以一个正式的"计划词汇"概念来发表草稿-08,这个套件的词汇执行可能会被大幅度地重修.