从Swagger模型生成C#类,如何使用Json.net处理$ ref?

时间:2014-07-15 22:14:05

标签: c# json json.net code-generation swagger

我从Swagger公开的模型生成C#类。 目前,我正在使用提供的petstore示例

http://petstore.swagger.wordnik.com/api/api-docs/pet

此网址中的Json包含以下内容:

"category": {
    "$ref": "Category"
},

我试图用Json.net

来阅读这篇文章
[JsonProperty("$ref")]
public string Ref { get; set; }

我的目的是通过Json.net实现Swagger对象模型,然后用它来生成swagger描述的模型。

它不起作用,保存此属性的对象仍为null,没有进一步的异常(也尝试设置IsReference = true)。当没有$ref时,它会起作用。

干净利落地处理这个问题的最佳做法是什么?

2 个答案:

答案 0 :(得分:3)

$ ref不打算直接反序列化为属性值。在这种情况下,它表示对JSON中其他地方定义的对象的引用名为" Category"应该参考。

有关JSON.NET中$ ref的具体处理,请参阅http://james.newtonking.com/json/help/index.html?topic=html/PreserveObjectReferences.htm上的PreserveReferencesHandling部分

答案 1 :(得分:2)

我在Json.NET中遇到了与JSON Schema引用处理完全相同的问题。

这就是我编写自己的JSON Schema解析器,验证器和生成器的原因:NJsonSchema。基于这个库,我实现了正确处理模式引用的Swagger工具:NSwag

也许其中一个库或工具可以帮助您解决问题......