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

Sea*_*ilb 23 java arrays arraylist gson

我试图将自定义类的ArrayList转换为JsonArray.以下是我的代码.它执行正常,但一些JsonArray元素为零,即使它们是ArrayList中的数字.我试图将它们打印出来.就像ArrayList中的customerOne年龄是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();
Run Code Online (Sandbox Code Playgroud)

Ahs*_*hah 33

尝试以下方法.应该管用.

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();
Run Code Online (Sandbox Code Playgroud)

主要的区别是,我改变ArrayListList.


Fad*_*ils 12

作为一个额外的答案,它也可以缩短.

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

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


Dan*_*joa 5

不知道这个解决方案与其他答案相比表现如何,但这是另一种方法,它非常干净,对于大多数情况应该足够了。

ArrayList<Customer> customerList = CustomerDB.selectAll();
Gson gson = new Gson();
String data = gson.toJson(customerList);
JsonArray jsonArray = new JsonParser().parse(data).getAsJsonArray();
Run Code Online (Sandbox Code Playgroud)

很想听听其他人的意见,如果这实际上是低效的,然后又是如何低效的。