如何在Java中将自定义类的ArrayList转换为JsonArray?

2022-09-01 09:27:23

我正在尝试将自定义类的ArrayList转换为JsonArray。下面是我的代码。它执行得很好,但一些JsonArray元素以零的形式出现,即使它们是ArrayList中的数字。我试图把它们打印出来。像 customerArray 中的一个年龄是 35,但在 JsonArray 中是 0。可能出了什么问题?

    ArrayList<Customer> customerList = CustomerDB.selectAll();
    Gson gson = new Gson();

    JsonElement element = 
     gson.toJsonTree(customerList , new TypeToken<List<Customer>>() {}.getType());

    JsonArray jsonArray = element.getAsJsonArray();

答案 1

下面的代码应该适用于您的情况。

List<Customer> customerList = CustomerDB.selectAll();

Gson gson = new Gson();
JsonElement element = gson.toJsonTree(customerList, new TypeToken<List<Customer>>() {}.getType());

if (! element.isJsonArray() ) {
// fail appropriately
    throw new SomeException();
}

JsonArray jsonArray = element.getAsJsonArray();

哎呀,在转换JSON树之前使用接口来收集值。List


答案 2

作为额外的答案,它也可以缩短。

List<Customer> customerList = CustomerDB.selectAll();

JsonArray result = (JsonArray) new Gson().toJsonTree(customerList,
            new TypeToken<List<Customer>>() {
            }.getType());