对于类型Gson,未定义方法toJson(...)

时间:2018-09-12 00:08:46

标签: java json serialization jar gson

我正在尝试使用GSON库将Java嵌套对象序列化为Json格式用于我的项目。我已经下载了gson-2.8.2.jar并建立了一个路径。

  • 要使此jar正常工作,我还需要做什么吗? 我听过有人提到Maven,但是我一点都不熟悉,对于我的编程技能水平来说似乎很复杂。

  • 我得到一个“ 类型为Gson的toJson(ParentObject)方法未定义”错误。我已经阅读了很多有关泛型/非泛型类型的信息,但是仍然很难理解。我试图调用“ .toJson(Object src,Type typeOfSrc)”,但我无法正确获取Type。我应该使用这种方法,我应该在“类型”中写什么?

  • 我的数组似乎也有问题。我尝试打印它,但始终收到“线程“主”中的异常” java.lang.NullPointerException”错误。有人知道为什么会这样吗?

这是我的主要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

1 个答案:

答案 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];