【发布时间】:2018-09-12 00:08:45
【问题描述】:
我正在尝试为我的项目使用 GSON 库将 Java 嵌套对象序列化为 Json 格式。我已经下载了 gson-2.8.2.jar 并建立了一个路径。
我还需要做什么才能让这个 jar 正常工作吗? 我听说有人提到 Maven,但我对它一点也不熟悉,而且对于我的编程技能水平来说,它似乎相当复杂。
我收到“对于 Gson 类型的 toJson(ParentObject) 方法未定义”错误。我已经阅读了大量关于泛型/非泛型类型的信息,但仍然很难理解。我试图调用“.toJson(Object src, Type typeOfSrc)”,但我无法正确输入类型。我应该使用这种方法吗?我应该在“类型”中写什么?
- 我的阵列似乎也有问题。我试图打印它,但不断收到“线程“主”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 对象中:
{ “特性”: [ { “财产”:“名字”, “价值”:“HubSpot” }, { “属性”:“姓氏”, “价值”:“测试” }, { “属性”:“网站”, “价值”:“http://hubspot.com” }, { “房地产公司”, “价值”:“HubSpot” }, { “财产”:“电话”, “价值”:“555-122-2323” }, { “财产”:“地址”, “价值”:“第一街 25 号” }, { “财产”:“城市”, “价值”:“剑桥” }, { “属性”:“状态”, “价值”:“MA” }, { “属性”:“拉链”, “价值”:“02139” } ] }
编辑
我已将我的类重命名为 MyGsonTest,导入 com.google.gson.Gson 而不是 com.google.gson.*,并修复了我的数组初始化。但是,'.toJson' 方法仍然不起作用。 这是我用作示例的教程,我遇到问题的方法似乎在那里工作得很好:https://www.youtube.com/watch?v=ou2yFJ-NWr8&index=2&list=PLpUMhvC6l7AOy4UEORSutzFus98n-Es_l
【问题讨论】:
-
public static String serializeJson(ParentObject obj1) { Gson gson = new Gson(); String json = gson.toJson(obj1); }此代码无法编译,因为它需要返回String -
你是对的!谢谢!我在代码中添加了 return 语句。
-
抱歉,但当您编辑问题时,不要只是在最后添加更多信息。真的返工这个问题。如果您将您的课程从 Gson 重命名为 MyGsonTest,那么请:更新相应的源代码。您希望确保有人可以仅查看问题内容,并快速了解您的问题。在这里,人们必须研究所有的 cmets、所有的答案以及那里的 cmets,但您仍然会混淆您的问题到底是什么。
标签: java json serialization jar gson