loggingJSON结构的语法

所以我试图logging由我所写的api返回的json格式,我想知道是否有任何stream行的json结构文档格式。

注意我没有试图去testing或validation任何东西,我只是用它来做文档。 也有一些方法来添加评论非常量(项目总是返回瓦特/相同的值)将是很好的。

这是我目前使用的不完全想法的scheme:

Plain names refer to identifiers or types. Some types have type-comment Strings that appear to be constant(always returned for that type of request) strings are "str" Constant Numbers would be just the number Constant null is null Booleans are true/false for constant booleans or Boolean otherwise [a,b,c] are lists with 3 items a,b,c [... ...] is a list of repeating elements of some types/constants/patterns {a:A,b:B,c:c} and {... ...} is the same for a dictionary. 

例:

 story := [header,footer] header := {"data":realHeader,"kind":"Listing"} realHeader := {"after": null, "before": null, "children": [{"data": realRealHeader, "kind": "t3"}], "modhash": ""} footer := {"data":AlmostComments,"kind":"Listing"} AlmostComments := {"data": {"after": null, "before": null, "children": comments, "modhash": ""}, "kind": "t1"} comments := [...{"data":comment, "kind":"t1"}...] realRealHeader := {"author": string, "clicked": boolean, "created": int, "created_utc": int, "domain": "code.reddit.com", "downs": int, "hidden": boolean, "id": string-id, "is_self": boolean, "levenshtein": null, "likes": null, "media": null, "media_embed": { }, "name": string-id, "num_comments": int, "over_18": false, "permalink": string-urlLinkToStoryStartingFrom/r, "saved": false, "score": int, "selftext": string, "selftext_html": string-html, "subreddit": string-subredditname, "subreddit_id": string-id, "thumbnail": "", "title": string, "ups": int, "url": "http://code.reddit.com/" } comments := { "author": string, "body": string-body_html-wout-html, "body_html": string-html-formated, "created": int, "created_utc": int, "downs": int, "id": string-id, "levenshtein": null, "likes": null, "link_id": string-id, "name": string-id", "parent_id": string-id, "replies": AlmostComments or null, "subreddit": string-subredditname, "subreddit_id": string-id, "ups": int } 

理论上JSON Schema可以达到这个目的,但实际上我不确定。 值得一提的是我希望。

除此之外,我个人认为,由于JSON主要用于传输对象,所以在语言客户端使用(Java,C#,各种脚本语言)来logging等价对象可能是最有意义的 – 毕竟,这样的对象通常被映射/绑定到JSON和回来。 然后你可以使用任何可用的文档工具,比如用于Java的Javadoc(perldoc用于Perl,用于c ++的Oxy等等)。

为了指定接口,还有WADL (Web应用程序描述语言),这可能会有所帮助。

如何从JSON生成HTML文档:

你将需要生成一个JSON模式 ,有这个服务,你可以粘贴原始的JSON和自动生成架构:

http://www.jsonschema.net/

通过手中的模式,您可以使用Matic自动生成HTML文档。

https://github.com/mattyod/matic

生成HTML

要安装Matic,您需要安装Node.js: http : //nodejs.org/

在Windows上,运行CMD

安装Jade运行这个命令: npm install -g jade

从Github打开已下载的Matic文件夹: cd PATH_TO_FOLDER/matic

运行安装命令: npm install -g

下载一个文档示例项目: https : //github.com/mattyod/matic-simple-example

把你的架构放在文件夹“架构”

打开项目文件夹: cd PATH_TO_PROJECT_FOLDER

运行命令: matic

您应该看到一条成功的消息: Documentation built to ./web/

我不确定你为什么试图loggingJSON,我可以猜测你试图find一个一致的方式告诉IDE或开发人员你的符号上的数据types。

jsdoc(http://jsdoc.sourceforge.net/#usage)可能是你正在寻找的东西。;

例如:

 { /** * Name of author * @type String */ "author": null, /** * has the author been clicked * @type Boolean */ "clicked": null, /** * Unix Timestamp of the creation date * @type Int */ "created": null } 

或者,如果你试图展示你的数据的结构。 你可以看看YAML(http://www.yaml.org/),它的devise是一个人类可读的序列化格式,可能更适合logging你的数据结构。;

一个简单的例子:

 Author: name: String clicked: Boolean created: Integer 

对于每个JSON块只有一层或两层深度的简单API,通过显示示例进行文档logging似乎是常见的做法。

但是对于更复杂的数据模型,比如你的,我还没有看到任何好的解决scheme。 有一些JSON模式的build议,但这似乎违背了JSON的精神,似乎太重量只为您的文件的目的。

我个人认为你的scheme非常好。 通过一些小的扩展来处理可选的和可选的部分,我认为它可以像Backus-Naur Form一样expression,很容易阅读和理解,并且符合JSON的精神。 也许我们可以利用这个“Taycher JSON语法forms”(TJGF)来获得一些推动力!

你可以写一个示例JSON响应,然后使用Markdown和Docco进行logging 。 Docco输出易于遵循基于HTML的文档。

它可能没有用,因为你似乎没有build立一个API。

但是,如果是这种情况,并且您正在使用Java或JVM(JAX-RS),则可以使用Swagger。

它允许用JSON表示描述你的API(如WSDL / WADL)。 他们提供了一个IHM层,读取您的API的JSON表示。 这里是你将得到: http : //petstore.swagger.wordnik.com/

https://developers.helloreverb.com/swagger/