[英]GSON adding java objects from arraylist to existing json file?
我有一個程序,當前可以從JSON文件讀取並將其實現到對象中,並存儲在對象的arraylist中。 昨天我問了一個有關如何寫回JSON文件的問題,有人建議使用.put方法,但這不能以JSON格式正確寫入。 例如,當[ { "waterSpace": 4.0, "airSpace": 5.0, "landSpace": 3.0, "name": "robbie", "penType": "pen" } ]
文件中存在如下所示的JSON對象時: [ { "waterSpace": 4.0, "airSpace": 5.0, "landSpace": 3.0, "name": "robbie", "penType": "pen" } ]
但是當我使用.put添加它時,會執行以下[ { "waterSpace": 4.0, "airSpace": 5.0, "landSpace": 3.0, "name": "robbie", "penType": "pen" } ]{"waterSpace": 4.0, "airSpace": 5.0, "landSpace": 3.0, "name": "robbie", "penType": "pen" }
如何使用GSON從陣列列表中正確添加對象,以便格式正確,如下所示: [ { "waterSpace": 4.0, "airSpace": 5.0, "landSpace": 3.0, "name": "robbie", "penType": "pen" },{ "waterSpace": 4.0, "airSpace": 5.0, "landSpace": 3.0, "name": "robbie", "penType": "pen" } ]
GSON也有一個序列化器,因此您只需使用fromJson方法將您的對象再次轉換為JSON。
import java.util.ArrayList;
import java.util.List;
import org.json.JSONArray;
import com.google.common.reflect.TypeToken;
import com.google.gson.Gson;
public class Deserializer {
public static void main(String[] args) {
Gson gson = new Gson();
List<YourObject> yourObjectList = new ArrayList<>();
YourObject object1 = new YourObject(10.2, 3.7, 8.5, "test", "test");
YourObject object2 = new YourObject(5.7, 4.9, 3.1, "test2", "test2");
yourObjectList.add(object1);
yourObjectList.add(object2);
JSONArray jsonArray = new JSONArray(
gson.toJson(yourObjectList, new TypeToken<List<YourObject>>() {}.getType()));
System.out.println(jsonArray);
}
public static class YourObject {
private double waterSpace;
private double airSpace;
private double landscape;
private String name;
private String penType;
public YourObject(double waterSpace, double airSpace, double landscape, String name, String penType) {
this.waterSpace = waterSpace;
this.airSpace = airSpace;
this.landscape = landscape;
this.name = name;
this.penType = penType;
}
@Override
public String toString() {
return String.valueOf(this.waterSpace) + " " + String.valueOf(this.airSpace) + " "
+ String.valueOf(this.landscape) + " " + this.name + " " + this.penType;
}
}
}
這是一個在spring boot項目中實現的示例,但是您可以在一個簡單的Java應用程序或其他應用程序中完成它:
@SpringBootApplication
public class AlfredValidator1Application implements CommandLineRunner{
public static void main(String[] args) {
SpringApplication.run(AlfredValidator1Application.class, args);
}
@Override
public void run(String... args) throws Exception {
test t1=new test(4.0, 5.0, 3.0, "robbie", "pen");
test t2=new test(4.0, 5.0, 3.0, "robbie", "pen");
List<test> listTest=new ArrayList<>();
listTest.add(t1);
listTest.add(t2);
System.out.println(new ObjectMapper().writeValueAsString(listTest));// you can use Gson instead
}
}
class test{
private double waterSpace;
private double airSpace;
private double landSpace;
private String name;
private String penType;
public test(){
}
public test(double waterSpace, double airSpace, double landSpace, String name, String penType) {
super();
this.waterSpace = waterSpace;
this.airSpace = airSpace;
this.landSpace = landSpace;
this.name = name;
this.penType = penType;
}
public double getWaterSpace() {
return waterSpace;
}
public void setWaterSpace(double waterSpace) {
this.waterSpace = waterSpace;
}
public double getAirSpace() {
return airSpace;
}
public void setAirSpace(double airSpace) {
this.airSpace = airSpace;
}
public double getLandSpace() {
return landSpace;
}
public void setLandSpace(double landSpace) {
this.landSpace = landSpace;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPenType() {
return penType;
}
public void setPenType(String penType) {
this.penType = penType;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.