Tidak dapat menambahkan lebih banyak bidang ke Java JsonNode setelah .set(nama bidang, JsonNode)

Saya sedang menulis tes untuk aplikasi web Java Play menggunakan Play.test dan org.junit. Beberapa pengujian memanggil API kami melalui permintaan http. Saya membuat JsonNode setiap kali saya perlu menyertakan Badan Permintaan dengan permintaan saya.

Salah satu permintaan tersebut mengharuskan saya untuk memasukkan sebuah array.

Kode:

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);

Saya tidak punya masalah menambahkan array ini. Kode di atas berfungsi apa adanya; Namun, jika saya menambahkan baris:

... //Same as above
sendNode = 
Json.newObject()
.put("foo_id", "stringy string")
.put("name", "New foo")
.set("an_array", arr)
.put("another_field", "value")

Tiba-tiba ada kesalahan. Saya tidak dapat menambahkan bidang lagi ke objek.

Saya mencari cara untuk mencapai Objek Json yang diinginkan (Badan Permintaan HTTP):

{
  foo_id: "123abc",
  name: "thisthing",
  an_array: ["element1", "element2", "element3"],
  another_field: "fieldvalue"
}

person Chris Siegler    schedule 03.10.2017    source sumber
comment
Kesalahan mana yang Anda dapatkan? Saya mengasumsikan pengecualian - bisakah Anda memposting jejak tumpukan?   -  person brain99    schedule 04.10.2017
comment
Kesalahan:(2073, 25) Java: tidak dapat menemukan simbol simbol: metode put(java.lang.String,java.lang.String) lokasi: kelas com.fasterxml.jackson.databind.JsonNode   -  person Chris Siegler    schedule 04.10.2017


Jawaban (1)


Wah, apakah aku merasa konyol. Saya hanya perlu menggunakan metode .putPOJO(String, Object)!

Saya memposting solusinya di sini untuk siapa pun yang konyol seperti saya:

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");

Metode .putPOJO(), tidak seperti metode set(), mengembalikan node yang sedang dibuat, untuk memungkinkan rangkaian yang diperlukan untuk terus menambahkan ke node.

person Chris Siegler    schedule 03.10.2017