繁体   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