Gson,创建JsonObject的简单JsonArray

5f0d552i  于 2022-11-06  发布在  其他
关注(0)|答案(3)|浏览(393)

我尝试使用gson构建JsonObject的JsonArray。每个JsonObject将采用以下格式,

{"image":"name1"}
{"image":"name2"}

和/或其他信息。
我有一个名称的字符串数组(“name 1”,“name 2”,...),我无法将字符串数组直接转换为JsonArray。我正在尝试迭代地创建JsonObject,并将其添加到JsonArray。

JsonObject innerObject;
        JsonArray jArray = new JsonArray();
        for(int i = 0; i<names.length; i++)
        {
            innerObject = new JsonObject();
            innerObject.addProperty("image",names[i]);
            jArray.add(innerObject);
        }

但据我所知,JsonArray中的add方法接受一个JsonElement,而这里我给出了一个JsonObject。我找不到一种方法将JsonObject转换为JsonElement。当我这样做时,使用gson的全部意义都将消失。有更好的方法吗?

vfhzx4xs

vfhzx4xs1#

首先,创建一个类,它表示一个单独的json对象,例如:

class MyObject {
    private String image;

    public MyObject(String name) { image = name; }
}

Gson将使用类的变量名来确定要使用的属性名。
然后使用您现有的数据创建一个数组或列表,例如:

ArrayList<MyObject> allItems = new ArrayList<>();
allItems.add(new MyObject("name1"));
allItems.add(new MyObject("name2"));
allItems.add(new MyObject("name3"));

最后,要序列化为Json,请执行以下操作:

String json = new Gson().toJson(allItems);

要将数据从json返回到数组,请执行以下操作:

MyObject[] items = new Gson().fromJson(json, MyObject[].class);

对于简单的序列化(反序列化),不需要直接处理Json类。

qoefvg9y

qoefvg9y2#

如果您要使用GSON,请按如下方式将其转换为对象

List<Image>images = new Gson().fromJson(json, Image[].class);

获取json字符串

String json = new Gson().toJson(images);

这就是gson的要点,你不应该用循环和其他东西来操纵数据,你需要利用它强大的模型解析。

bvjxkvbb

bvjxkvbb3#

也许太晚了,但是...如果你不需要创建一个新类,有一种方法可以做到:

import com.google.gson.JsonObject;
import com.google.gson.JsonArray
...
...
JsonArray jobj = new JsonArray();
String[] names = new String[]{"name1","name2","name3"};
for(String name : names) {
   JsonObject item = new JsonObject();
   item.addProperty("name",name);
   jobj.add(item);
}
System.out.println(jobj.toString());// ;)

相关问题