我正在尝试使用GSON库将Java嵌套对象序列化为Json格式用于我的项目。我已经下载了gson-2.8.2.jar并建立了一个路径。
要使此jar正常工作,我还需要做什么吗? 我听过有人提到Maven,但是我一点都不熟悉,对于我的编程技能水平来说似乎很复杂。
我得到一个“ 类型为Gson的toJson(ParentObject)方法未定义”错误。我已经阅读了很多有关泛型/非泛型类型的信息,但是仍然很难理解。我试图调用“ .toJson(Object src,Type typeOfSrc)”,但我无法正确获取Type。我应该使用这种方法,我应该在“类型”中写什么?
这是我的主要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对象:
{ “属性”: [ { “ property”:“ firstname”, “ value”:“ HubSpot” }, { “属性”:“姓氏”, “ value”:“测试” }, { “属性”:“网站”, “ value”:“ http:// hubspot.com” }, { “房地产公司”, “ value”:“ HubSpot” }, { “ property”:“ phone”, “值”:“ 555-122-2323” }, { “ property”:“地址”, “值”:“第一街25号” }, { “属性”:“城市”, “ value”:“剑桥” }, { “ property”:“ state”, “ value”:“ MA” }, { “ property”:“ zip”, “值”:“ 02139” } ] }
修改
我将我的课程重命名为MyGsonTest,导入了com.google.gson.Gson而不是com.google.gson。*,并修复了数组初始化问题。但是,“。toJson”方法仍然无法正常工作。 这是我作为示例使用的教程,我遇到麻烦的方法似乎在这里工作得很好:https://www.youtube.com/watch?v=ou2yFJ-NWr8&index=2&list=PLpUMhvC6l7AOy4UEORSutzFus98n-Es_l
答案 0 :(得分:1)
您从GSON jar中导入的任何内容都可能被您自己的名为Gson
的类覆盖
public class Gson {
gson.toJson(obj1);
不存在的原因是您尚未编写任何此类方法。
您要使用的类是com.google.gson.Gson
,所以我建议您开始将自己的手工类重命名为其他名称,例如MyGSonTest
根据Apache Maven Apache Maven是一个软件项目管理和理解工具。
修改
关于数组问题,还需要声明一个大小为
的数组Property [] myArray = new Property[10];