从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
时工作
干净利落地处理这个问题的最佳实践是什么?
$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工具: