2016-02-28 473 views
0

我遇到了这个问题,现在用additionalProperties实现任意字段行为。以下是我的具有附加属性的模型。additionalProperties消除所有模型属性

"CObject": { 
"type": "object", 
"properties": { 
    "_id": { 
    "type": "string" 
    }, 
    "createdAt": { 
    "type": "string", 
    "format": "date-time" 
    }, 
    "updatedAt": { 
    "type": "string", 
    "format": "date-time" 
    } 
}, 
"additionalProperties": { 
    "type": "string" 
} 
} 

事实上,我在生成的Java客户端看到的唯一变化是,我现在CObject.java子类HashMap类。我预计在CObject上拨打put([key],[value])只会在请求正文中添加一个新属性。在运行测试时,我意识到CObject内的所有属性在最终请求主体中都不存在。因此,客户端只发送一个任意定义属性的请求主体,并消除规范中定义的所有其他属性。我正在使用最新的swagger-codegen(2.1.6 snapshot)。我怎么能通过这个问题?
NB我不希望地图值出现在它们自己的属性下,我希望键值对出现在与规范中定义的其余属性相同的层次结构下。

回答

0

在您提供的JSON中,“additionalProperties”只是一个属性名称,其类型是字符串。比方说,属性名称是“keyValuePair”,然后使用additionalProperties正确的做法是

"keyValuePair": { 
    { 
     "type": "object", 
     "additionalProperties": { 
      "type": "string" 
     } 
    } 
} 
+0

感谢这一点,但是,我已经编辑了问题,以进一步缩小我想要什么,因为我已经尝试过这一点。 – egima

+0

你能举一个例子(JSON)什么样的CObject? –

+0

如果这是CBObject的外观没有任何额外的PARAMS: \t “CBObject”:{ \t \t “createdAt”:空, \t \t “updatedAt”:空, \t \t “_id”:真 \t} 后调用CBObject.put(“name”,“bengi”),它应该看起来像这样; \t \t “CBObject”:{ \t \t “createdAt”:空, \t \t “updatedAt”:空, \t \t “_id”:真实, \t \t “名”: “bengi” \t} – egima