我正在使用Play.test和org.junit为Java Play Web应用程序编写测试。有些测试通过http请求调用我们的API。每当我需要在请求中包含Request Body时,我就会创建一个JsonNode。
一个这样的请求要求我包含一个数组。
代码:
JsonNode arr = Json.newArray()
.add("Element 1")
.add("Element 2")
.add("Element 3");
sendNode =
Json.newObject()
.put("foo_id", "stringy string")
.put("name", "New foo")
.set("an_array", arr);
添加此数组我没有任何问题。上面的代码按原样工作;但是,如果我添加一行:
... //Same as above
sendNode =
Json.newObject()
.put("foo_id", "stringy string")
.put("name", "New foo")
.set("an_array", arr)
.put("another_field", "value")
突然发生错误。我无法再向对象添加任何字段。
我正在寻找一种方法来实现这个所需的Json对象(HTTP Request Body):
{
foo_id: "123abc",
name: "thisthing",
an_array: ["element1", "element2", "element3"],
another_field: "fieldvalue"
}
答案 0 :(得分:0)
我在这里为任何像我一样愚蠢的人发布解决方案:
JsonNode arr = Json.newArray()
.add("Element 1")
.add("Element 2")
.add("Element 3");
JsonNode sendNode = Json.newObject()
.put("foo_id", "idString")
.put("name", "foo's name")
.putPOJO("array_field", arr)
.put("another_field", "string value");
与set()方法不同,.putPOJO()方法返回正在创建的节点,以允许继续添加到节点所需的链接。