Java 传递JSON数组时REST服务引发异常。我犯了什么错?

Java 传递JSON数组时REST服务引发异常。我犯了什么错?,java,json,rest,client,ibm-rad,Java,Json,Rest,Client,Ibm Rad,我得打电话给第三方的一家宁静服务公司。他们希望有一个特定的条目作为数组。我在这里检查了一些问题,并编写了代码来创建只包含1个元素的数组。即使在那之后,服务部门也在抱怨同样的问题。如果我没有通过该数组,它将正确响应。但不是预期的反应。说它向我推荐了一些东西。我希望得到批准。如果我没有通过阵列,我会回来调查。如果我通过了数组,我将返回异常,正如我所期望的“已批准” 所以。我尝试了两种方法,但都抛出了相同的异常 方法1:创建JSON数组并直接填充它 JSONObject info = new J

我得打电话给第三方的一家宁静服务公司。他们希望有一个特定的条目作为数组。我在这里检查了一些问题,并编写了代码来创建只包含1个元素的数组。即使在那之后,服务部门也在抱怨同样的问题。如果我没有通过该数组,它将正确响应。但不是预期的反应。说它向我推荐了一些东西。我希望得到批准。如果我没有通过阵列,我会回来调查。如果我通过了数组,我将返回异常,正如我所期望的“已批准”

所以。我尝试了两种方法,但都抛出了相同的异常

方法1:创建JSON数组并直接填充它

   JSONObject info = new JSONObject();
    info.put("@id", "941689716");
    info.put("name", "XXX");
    info.put("company", "XX");
    JSONArray contactsArray = new JSONArray();
    contactsArray.add(info);
    event.put("contacts", contactsArray.toString());
方法2:创建arraylist,将其添加到JSON数组中

   JSONObject info = new JSONObject();
    info.put("@id", "941689716");
    info.put("name", "XXX");
    info.put("company", "XX");
    List<JSONObject> objects = new ArrayList<JSONObject>();
    objects.add(info);
    JSONArray contactsArray = new JSONArray();
    contactsArray.addAll(objects);
    event.put("contacts", contactsArray.toString());
我在IBMRAD上使用Java6,JSON对象来自com.IBM.JSON.java包。由于法规的限制,我不能使用任何开源代码

这是我的问题

如果我错了,请纠正我


这可能是服务器端问题吗?我在另一个线程中读到,如果arraylist只有一个元素,他们就必须处理它,否则它可能会抛出这个错误。

我要感谢。他的评论让我在根JSON对象中设置时删除了数组末尾的.toString(),嘿!!!!!这很有效,我得到了批准的回复。

您的服务需要一个JSON对象。您正在发送一个JSON数组。我没有编写JSON的丰富经验。我该如何纠正这一点。请帮忙!!您可以发布一个链接到您正在调用的REST服务的文档,以及您得到的完整异常吗?抱歉。我不允许那样做。这不是一项免费服务。它的授权内容。@SotiriosDelimanolis-谢谢
   JSONObject info = new JSONObject();
    info.put("@id", "941689716");
    info.put("name", "XXX");
    info.put("company", "XX");
    List<JSONObject> objects = new ArrayList<JSONObject>();
    objects.add(info);
    JSONArray contactsArray = new JSONArray();
    contactsArray.addAll(objects);
    event.put("contacts", contactsArray.toString());
Can not deserialize instance of java.util.ArrayList out of START_OBJECT token\n at [Source: java.io.ByteArrayInputStream@52d91fcc; line: 1, column: 50] (through reference chain: com.xx.xx.xx.xx[\"event\"]->com.xx.xx.xx.Event[\"contacts\"])"})