簡體   English   中英

REST API中的輸入請求框架

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM