2016-02-28 107 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