如何在Objective-C中验证JSON Schema?

3
我从服务器获得了JSON数据,想要使用JSON Schema(可能是草案V3,但可以更改)来验证它。
我认为也许NSDictionary会有这个功能,但似乎并没有。以下是我的尝试: [self.dictionary] (其中dictionary是一个NSDictionary)
我找不到任何用于验证NSDictionary与JSON模式相匹配的方法。我该怎么做?
请注意,您可以在Objective-C中编写C和C++代码,因此这些标签出现在问题中。

我不知道有内置的方法来做到这一点,也许有第三方解决方案,但我的猜测是你将不得不自己编写它。 - Simon McLoughlin
你可能已经尝试编辑你关闭的问题以便重新打开它。 - bummi
1
从服务器返回了JSON,我想根据JSON模式进行验证。请注意,并非所有的JSON对象都是字典。 - ilya n.
谢谢Ilya,提出了一个好观点。 - Sam
3个回答

6

Objective-C是C语言的超集。JSON Schema网站列出了一个C库wjelement,您可以进行适应。

示例函数调用如下:

WJESchemaValidate(schema, json, schema_error, schema_load, NULL, format)

自然而然地,您需要提供C字符串,而不是NSString

注意:在我写完答案后,我意识到您从一开始就可以使用纯C :)


是的,人们一直在删除我的C标签,我也不能暗示您建议使用C库(否则我的问题将被删除)。 - Sam
看起来不错,虽然不是最整洁的代码,因为我必须将我的NSDictionary转换成字符串然后再转换成C字符串,但它看起来像一个非常成熟的库,所以希望这会值得。谢谢 - Sam
1
@Sam,最好只使用 c 标签。 - ilya n.
不想打开三个问题 ;) - Sam
更新:看起来运行正常!谢谢。我想我可能会在某个时候开始着手纯 Obj-C 版本的工作... - Sam
刚刚完成并发布了v0.1版本 - 目前已通过JSON schema测试套件。希望这对大家有用。 - Sam

4

在没有找到令人满意的答案之后,我自己开发了一个原生Objective-c模式验证器,链接在这里:https://github.com/samskiter/KiteJSONValidator

我刚刚通过了JSON-Schema测试套件中的所有测试,所以发布了v0.1版本。

它是根据MIT许可证发布的,希望对某些人有用...


1

这很不错,但似乎不能解析由JSON-Schema规范定义的模式文件。虽然它具有类型化和验证的描述语言,但这是一种不错的解决问题的方式。 - Sam

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接