【发布时间】:2021-07-24 15:10:58
【问题描述】:
我正在尝试使用 TypeDoc、Swagger 和 SwaggerJsDoc 为我的项目构建一些文档。由于 TypeDoc 和 swagger 有不同的注解类型,而且 Swagger 的注解更加详细,我希望 TypeDoc 能够阅读我的 Swagger 注解。我已经设法利用 TypeDoc 的注释解析器并成功地为我的代码和 API 创建了漂亮的自定义文档,例如:
我对此非常满意,但是很难将 Swagger 的架构定义解析为纯 Javascript 对象以显示我的响应或正文示例。在我看来,Swaggers 的定义太复杂了。它们可以大大简化,同时保持相同的信息。他们是这样来的:
{
"type": "object",
"properties": {
"minStockProds": {
"type": "array",
"items": {
"type": "object",
"properties": {
"sku": {
"type": "string"
},
"minStock": {
"type": "number"
},
"ref": {
"type": "string"
}
}
}
},
"ordersCount": {
"type": "number"
}
}
}
或者这个!,极端地说:
{
"type": "object",
"properties": {
"test": {
"type": "object",
"properties": {
"test1": {
"type": "string"
},
"test2": {
"type": "object",
"properties": {
"test3": {
"type": "number"
},
"test4": {
"type": "array",
"items": {
"type": "object",
"properties": {
"test5": {
"type":"string"
},
"test6": {
"type": "number"
}
}
}
}
}
}
}
},
"test7": {
"type":"array",
"items":{
"type": "object",
"properties": {
"name":{
"type": "string"
},
"value": {
"type": "number"
}
}
}
}
}
}
我怎样才能把它解析成这个?
{
minStockProds: [
{
sku: "string",
minStock: "number",
ref: "string"
}
],
ordersCount: "number",
}
或者,这个?
{
test: {
test1: "string",
test2: {
test3: "number",
test4: [
{
test5: "string",
test6: "number",
}
]
}
},
test7: [
{
name: "string",
value: "number",
}
]
}
我已经尝试了很多方法来适应所有这些类型的对象,以至于我的代码现在在这里显示时看起来很糟糕且令人困惑,阅读它将是一种努力。
谁能给我一个提示或告诉一个可以为我提供便利的图书馆?无需完全解决此问题,只需寻找选项。我什至尝试研究 Swagger-UI 包以了解它们是如何做到的,但仍在寻找能够做到这一点的函数。
非常感谢!
【问题讨论】:
-
你试过这个吗:
var apischeme = JSON.parse(jsonApiSchemeFromResponse);? -
这只是将 json 解析为 JS 对象。问题在于取消所有这些不必要的级别。
标签: json parsing recursion javascript-objects