[英]input request framing in rest api
我正在編寫用於構造輸入請求主體的邏輯,該主體在調用Rest API時需要發送。 我正在使用Map這樣做,然后使用對象映射器將其轉換為json格式的字符串。
示例:樣本輸入請求正文
{ "A":{"1":"aa","2":"bb" },"B":{"3":"cc","4":"dd"}}
我的代碼將如下所示
MyReq req=new MyReq();
Map<String, String> A = Maps.newHashMap();
A.put("1","aa");
A.put("2","bb");
Map<String, String> B = Maps.newHashMap();
B.put("3","cc");
B.put("4","dd");
req.setA(A);
req.setB(B);
final ObjectMapper obj = new ObjectMapper();
String myjson=obj.writeValueAsString(req);
但是,在這種格式的情況下,我該怎么做,
{"A":{"1":"aa","2":"bb"},"B":{"New":{"new1":"qq","new2","zz",},"3":"cc","4":"dd"}}
您正在使用的地圖以及響應的基礎對象表示簡單的JSON對象(與數組相對,...)。 您有多種選擇來創建您正在描述的響應。 為了擴展您的示例,在JAXB中,您可以執行以下操作:
@XMLRootElement
public class MyReq {
....
@XmlElement(name = "3")
private String three;
但是,對於諸如3這樣的非描述性屬性,則不要這樣做。如果明確定義和頻繁使用響應和/或如果JAXB類在應用程序的其他部分(JPA Bean,...)中使用,則使用JAXB。
您還可以使用Map<String,Object>
替換類MyRec
,只需將其他映射以及其他值put("3","cc")
。
還可以看看JSON-P API ,它是此類隨機示例的最佳解決方案:
JsonObject response = Json.createObjectBuilder()
.add("A", Json.createObjectBuilder().add("1", "aa").add("2", "bb"))
.add("B", Json.createObjectBuilder().add("NEW", Json.createObjectBuilder().add("new1", "qq").add("new2", "zz")))
.add("3", "cc")
.add("4", "dd").build();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.