[英]JsonArray is not adding all JsonObjects
當我添加測試 JsonObjects 列表時,只有最后一個 JsonObject 被添加到 JsonArray。 我不明白為什么,因為我正在關注 oracle 的文檔。 https://docs.oracle.com/javaee/7/api/javax/json/JsonArray.html
來自名為 TestRun 的類的方法
public JsonObject convertToJSONObject() {
return Json.createObjectBuilder()
.add("name", name)
.add("value", value)
.add("timestamp", convertZonedDateTime())
.build();
}
public JsonArray convertToJSONArray(JsonObject object) {
return Json.createArrayBuilder()
.add(object)
.build();
}
Main (注意:我使用 faker 來生成隨機信息)
TestRun testRun;
Faker faker = new Faker(); //Faker to generate random level_name
JsonArray jsonArray = null;
for (int i = 0; i < 2; i++) {
testRun = new TestRun(faker.name().firstName(), faker.number().numberBetween(1, 200));
JsonObject object = testRun.convertToJSONObject();
jsonArray = testRun.convertToJSONArray(object);
}
System.out.println(jsonArray);
您需要在 for 循環中創建JsonArrayBuilder
,而不是在每個步驟中創建 JsonArray。 然后在 for 循環之外構建構建器,例如:
JsonArrayBuilder arrayBuilder = null;
for (int i = 0; i < 2; i++) {
testRun = new TestRun(faker.name().firstName(), faker.number().numberBetween(1, 200));
JsonObject jsonObject = testRun.convertToJSONObject();
if (arrayBuilder == null) {
arrayBuilder = Json.createArrayBuilder().add(jsonObject);
} else {
arrayBuilder = arrayBuilder.add(jsonObject);
}
}
jsonArray = arrayBuilder.build();
測試運行.java
import javax.json.Json;
import javax.json.JsonObject;
import java.time.ZonedDateTime;
public class TestRun {
private String name;
private Integer value;
private ZonedDateTime timestamp;
public TestRun(String name, Integer value, ZonedDateTime timestamp) {
this.name = name;
this.value = value;
this.timestamp = timestamp;
}
public JsonObject convertToJSONObject() {
return Json.createObjectBuilder()
.add("name", name)
.add("value", value)
.add("timestamp", convertZonedDateTime())
.build();
}
private String convertZonedDateTime() {
return timestamp.toString(); // replace with yours code
}
}
帶有main
方法的類:
import com.github.javafaker.Faker;
import javax.json.Json;
import javax.json.JsonArrayBuilder;
import javax.json.JsonObject;
import java.time.ZonedDateTime;
public class FakerExample {
public static void main(String[] args) {
Faker faker = new Faker();
JsonArrayBuilder jsonArrayBuilder = Json.createArrayBuilder();
for (int i = 0; i < 2; i++) {
var testRun = new TestRun(faker.name().firstName(), faker.number().numberBetween(1, 200), ZonedDateTime.now());
JsonObject object = testRun.convertToJSONObject();
jsonArrayBuilder.add(object);
}
System.out.println(jsonArrayBuilder.build());
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.