我正在尝试使用gson构建JsonObject的JsonArray。 每个JsonObject将采用以下格式,
{"image":"name1"}
{"image":"name2"}
等等。
我有一个名字的字符串数组(“name1”,“name2”,...) 我无法直接将字符串数组转换为JsonArray。我正在尝试迭代地创建JsonObjects并将其添加到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的全部意义都将消失。还有更好的方法吗?
答案 0 :(得分:5)
首先,创建一个表示单个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类。
答案 1 :(得分:2)
如果您打算使用GSON,请使用它来转换为对象
List<Image>images = new Gson().fromJson(json, Image[].class);
获取json字符串
String json = new Gson().toJson(images);
这是gson的观点,你不应该用循环和东西操纵数据。您需要利用其强大的模型解析功能。
答案 2 :(得分:1)
也许为时已晚,但是...如果您不需要创建新类,有一种方法可以解决:
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());// ;)