【问题标题】:Is there a general file specification for OpenApi?OpenApi 是否有通用文件规范?
【发布时间】:2024-01-14 18:43:02
【问题描述】:

我注意到这种可以将$ref 用于其他声明对象的规范形式是一种可用于许多用例的模式。

这个有名字吗?有图书馆吗?

我可以看到这对于您希望能够序列化为 JSON / YAML 文件并将其反序列化为内存中的对象的关系数据的情况非常有用。

这是我所追求的一个例子:

我想序列化这个引用其他对象的类。

class Node {
   Node next;
   Node prev;
}

可以这样序列化:

{
    "nodes": {
        "0": {
            "next": {
                "$ref": "#/nodes/1"
            }
        },
        "1": {
            "prev": {
                "$ref": "#/nodes/0"
            }
        }
    }
}

或许

{
    "next": {
        "prev": {
            "$ref": "#" // The root
        }
    }
}

本质上,这是一种用我所追求的树结构序列化类似图形的数据的方法。

【问题讨论】:

  • $refJSON Reference。这是完整的 OpenAPI 规范:github.com/OAI/OpenAPI-Specification/blob/master/versions/…。这是你要找的吗?
  • 不完全。我的问题是是否有构建库来利用这个$ref 标识符,这样当您反序列化 JSON 时,只会在内存中创建一个对象 - 但它会被使用 @987654329 引用它的每个其他对象引用@ 签名。反之亦然,该库还允许您获取内存中的任何对象并将其序列化为 JSON。如果这些对象在多个位置被引用,它将用$ref 替换对其他对象的引用。

标签: json serialization yaml deserialization openapi


【解决方案1】:

所以看起来有些 Json 序列化程序确实支持这一点,而且它不是一个单独的规范 - 它是 JSON 规范中内置的一个特性..

https://www.newtonsoft.com/json/help/html/PreserveObjectReferences.htm

【讨论】:

    最近更新 更多