You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从OpenAPI引用的Schema中获取嵌套对象属性?

问题解决思路

1. 修正Schema定义匹配期望输出

你当前的getArray Schema错误地将nestedObject字段关联为整个gimmiewhatiWant对象,导致接口返回完整嵌套结构。要直接返回valueiWant的属性值,需调整Schema:

错误示例(返回完整嵌套对象)

components:
  schemas:
    gimmiewhatiWant:
      type: object
      properties:
        valueiWant:
          type: string
    getArray:
      type: array
      items:
        type: object
        properties:
          name:
            type: string
          message:
            type: string
          nestedObject:
            $ref: '#/components/schemas/gimmiewhatiWant'  # 引用了整个对象结构

正确调整(指定目标属性类型)

将nestedObject字段直接定义为字符串类型,明确返回值格式:

components:
  schemas:
    gimmiewhatiWant:
      type: object
      properties:
        valueiWant:
          type: string
    getArray:
      type: array
      items:
        type: object
        properties:
          name:
            type: string
          message:
            type: string
          nestedObject:
            type: string  # 直接定义为字符串,匹配期望的"foo"格式

2. 调整后端接口实现逻辑

Schema仅定义响应格式约束,实际返回值由后端代码决定。需确保代码从嵌套对象中提取valueiWant属性值,而非直接返回整个对象:

以Node.js为例:

// 错误写法(返回完整嵌套对象)
res.json([{ name: 'Joe', message: 'Hello', nestedObject: { valueiWant: 'foo' } }]);

// 正确写法(提取目标属性值)
res.json([{ name: 'Joe', message: 'Hello', nestedObject: { valueiWant: 'foo' }.valueiWant }]);

3. 补充响应示例明确格式

在OpenAPI的responses部分添加示例,避免格式歧义:

paths:
  /your-target-endpoint:
    get:
      responses:
        '200':
          description: 成功返回目标数组
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getArray'
              example:
                - name: "Joe"
                  message: "Hello"
                  nestedObject: "foo"

内容的提问来源于stack exchange,提问作者Joe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 03:16:09