我正在尝试使用GSON库为我的项目将Java嵌套对象序列化为Json格式。我已经下载了gson-2.8.2.jar并构建了一个路径。
这是我的主要java类:
package Gson_package;
import com.google.gson.*;
public class Gson {
public static void main(String args[]) {
ParentObject obj1 = new ParentObject();
serializeJson(obj1);
}
public static String serializeJson(ParentObject obj1) {
Gson gson = new Gson();
String json = gson.toJson(obj1);
return json;
}}
这是我的父类创建一个数组,另一个嵌套类创建具有两个属性的对象:
package Gson_package;
public class ParentObject {
public Property [] myArray; //1 attribute - An array of "Property" Objects
public ParentObject() //Default constructor {
for(int i = 0;i<9;i++){
myArray[i] = new Property("", "");
}
myArray[0].setPropertyValue("firstname", "HubSpot");
myArray[1].setPropertyValue("lastname", "Test");
myArray[2].setPropertyValue("website", "http://hubspot.com");
myArray[3].setPropertyValue("company", "HubSpot");
myArray[4].setPropertyValue("phone", "555-122-2323");
myArray[5].setPropertyValue("address", "25 First Street");
myArray[6].setPropertyValue("city", "HCambridge");
myArray[7].setPropertyValue("state", "MA");
myArray[8].setPropertyValue("zip", "02139");
}
public static class Property //Properties object {
public String property;//attributes
public String value;
//General Constructor
public Property(String property, String value){
this.property = property;
this.value = value;
}
//getter method
public String getPropertyValue() {
return this.property+" : "+this.value;
}
//setter method
public void setPropertyValue(String property, String value) {
this.property = property;
this.value = value;
}}}
我正在使用这个JSON文件,我试图将其放入Java Objects:
{“properties”:[{“property”:“firstname”,“value”:“HubSpot”},{“property”:“lastname”,“value”:“Test”},{“property”:“website” ,“value”:“http:// hubspot.com”},{“property”:“company”,“value”:“HubSpot”},{“property”:“phone”,“value”:“555- 122-2323“},{”property“:”address“,”value“:”25 First Street“},{”property“:”city“,”value“:”Cambridge“},{”property“:” state“,”value“:”MA“},{”property“:”zip“,”value“:”02139“}]}
编辑
我已将我的类重命名为MyGsonTest,导入com.google.gson.Gson而不是com.google.gson。*并修复了我的数组初始化。但是,“。toJson”方法仍无效。这是我使用的教程作为一个例子,我遇到麻烦的方法似乎在那里工作得很好:https://www.youtube.com/watch?v=ou2yFJ-NWr8&index=2&list=PLpUMhvC6l7AOy4UEORSutzFus98n-Es_l
无论您从GSON jar导入的是什么,都可能被您自己的类Gson
覆盖
public class Gson {
gson.toJson(obj1);
不存在的原因是你没有写过任何这样的方法。
您想要使用的课程是com.google.gson.Gson
,所以我建议您开始将自己手工制作的课程重命名为其他课程,例如: MyGSonTest
根据Apache Maven,Apache Maven是一个软件项目管理和理解工具。
编辑
另外,关于Array问题,您需要声明具有大小的Array
Property [] myArray = new Property[10];
好的,所以我有三个问题。我弄清楚我做错了什么。
问题1. Gson jar工作正常。除了在项目中构建路径并导入com.google.gson.Gson库时,除了Scary Wombat指出之外,没有什么需要它可以工作。
问题2.我使用toJson方法得到的错误是因为没有正确调用该方法。当它被调用时,它按预期工作:
String json = new Gson().toJson(obj1);
问题3.最初我有一个对象数组。我不得不将其更改为ArrayList,因此我可以向其添加对象,而不必声明固定大小的数组。
我也必须改变我的课程。我将在下面发布正确的代码。此代码创建Java类,然后用于以JSON格式保存您在这些类中创建的数据。
希望这有助于万一有人遇到同样的问题。
主要课程:
package myGsonTestPackage;
import com.google.gson.Gson;
public class MyGsonTest {
public static void main(String args[]) {
serialize();
}
private static void serialize() {
ParentObject obj1 = new ParentObject();
//initialize 9 Property Objects as per Json file we're working with
Property p1 = new Property();
Property p2 = new Property();
Property p3 = new Property();
Property p4 = new Property();
Property p5 = new Property();
Property p6 = new Property();
Property p7 = new Property();
Property p8 = new Property();
Property p9 = new Property();
//set property and value for each Property Object we've initialized
p1.setPropertyValue("firstname", "HubSpot");
p2.setPropertyValue("lastname", "Test");
p3.setPropertyValue("website", "http://hubspot.com");
p4.setPropertyValue("company", "HubSpot");
p5.setPropertyValue("phone", "555-122-2323");
p6.setPropertyValue("address", "25 First Street");
p7.setPropertyValue("city", "HCambridge");
p8.setPropertyValue("state", "MA");
p9.setPropertyValue("zip", "02139");
//Populate the ArrayList
obj1.properties.add(p1);
obj1.properties.add(p2);
obj1.properties.add(p3);
obj1.properties.add(p4);
obj1.properties.add(p5);
obj1.properties.add(p6);
obj1.properties.add(p7);
obj1.properties.add(p8);
obj1.properties.add(p9);
//create Json representation of the data
String json = new Gson().toJson(obj1);
//Print the data
System.out.println(json);
}}
ParentObject类:
package myGsonTestPackage;
import java.util.ArrayList;
public class ParentObject {
public ArrayList<Property> properties = new ArrayList<>(); }
物业类别:
package myGsonTestPackage;
public class Property {
public String property;//attributes
public String value;
//getter method
public String getPropertyValue() {
return this.property+" : "+this.value;
}
//setter method
public void setPropertyValue(String property, String value) {
this.property = property;
this.value = value;
}}