簡體   English   中英

如何通過Rest API發送JSONArray

[英]How to send JSONArray through a Rest API

我需要有關REST API的幫助。 我試圖通過使用郵遞員的身體進行測試通過API發送JSON數據。 它似乎可以工作,但是當我通過調試代碼檢查陣列時,它說該陣列的大小為0。

我正在嘗試發送此:

{
   "data":[
      { 
         "name":"",
         "valor":"",
         "check":"0",
         "ind":"1"
      },
      {
         "name":"",
         "valor":"* FT NPR **",
         "check":"1",
         "ind":"0"
      }
    ]
}

我正在使用Java EE。 我試圖將代碼解析為String,但是我不知道自己做錯了還是不起作用。

這是代碼:

@GET
@Path("subGroup")
@Produces("application/json")
@Consumes(MediaType.APPLICATION_JSON)
public Response definedSubGrupo(@QueryParam("Us") int US, JSONArray data) 
{
   String Data=UtilClass.definedSubGrupo(data);
   return UtilClass.getReturn(Data);
}

我期望發送的是完整的JSON,但實際輸出為空(大小= 0)。

謝謝。

您可以像這樣直接傳遞對象列表:

public Response definedSubGrupo(@QueryParam("Us") int US, List<YourObject> data) 

您在JavaEE容器上,並且根據要指定的注釋,將在JAX-RS之上構建。 使用JAX-RS,您可以接受請求主體作為純String

public Response definedSubGrupo(@QueryParam("Us")final int US, final String jsonBody) { ... }

然后,您可以使用市場上可用的庫之一(JSON-java,Gson,Jackson等)將jsonBody String轉換為表示JSON文檔結構的對象。

例如,有了傑克遜,您將擁有

final TreeNode treeNode = objectMapper.readTree(jsonBody);

使用JSON-Java,您可以

final JSONObject jsonObject = new JSONObject(jsonBody);
final JSONArray data = jsonObject.getJSONArray("data");

到目前為止,您要說的JAX-RS基本上是“ 將請求主體映射到此JSONArray ”。
不幸的是, JSONArray的類布局似乎與您要發送的JSON不兼容,因此JAX-RS只需創建一個新的“空”實例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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