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

本文关键字:Json 何使用 net 处理 ref 模型 Swagger | 更新日期: 2023-09-27 18:13:01

我正在从Swagger暴露的模型生成c#类。现在,我使用提供的petstore示例

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

这个url的Json包含以下内容:

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

我试着用Json.net通过

阅读这个
[JsonProperty("$ref")]
public string Ref { get; set; }

我的目的是通过Json.net实例化Swagger Object模型,然后使用它来生成Swagger描述的模型。

它不起作用,并且持有该属性的对象仍然是null,没有进一步的异常(也尝试设置IsReference = true)。

$ref时工作

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

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

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

用于JSON中$ref的具体处理。. NET中的PreserveReferencesHandling部分见http://james.newtonking.com/json/help/index.html?topic=html/PreserveObjectReferences.htm

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

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