Я пытаюсь сериализовать вложенный объект Java в формат Json, используя библиотеку GSON для моего проекта. Я скачал gson-2.8.2.jar и создал путь.
Есть ли что-то еще, что я должен сделать, чтобы эта банка работала правильно?
Я слышал, что люди упоминают Maven, но я совсем не знаком с ним, и это кажется довольно сложным для моего уровня навыков программирования.
Я получаю сообщение " Метод toJson (ParentObject) не определен для типа Gson " ошибка. Я прочитал тонну информации о родовых / неуниверсальных типах, но это все еще трудно понять. Я пытался вызвать " .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"
},
{
"свойство": "фамилия",
"value": "Test"
},
{
"свойство": "сайт",
"значение": "http: // hubspot.com"
},
{
"собственность": "компания",
"значение": "HubSpot"
},
{
"собственность": "телефон",
«значение»: «555-122-2323»
},
{
"свойство": "адрес",
"значение": "25 Первая улица"
},
{
"собственность": "город",
"значение": "Кембридж"
},
{
"собственность": "государство",
"значение": "МА"
},
{
"свойство": "почтовый индекс",
"значение": "02139"
}
]
}
редактировать
Я переименовал свой класс в MyGsonTest, импортировал com.google.gson.Gson вместо com.google.gson. * И исправил инициализацию массива. Однако метод .toJson по-прежнему не работает.
Это учебное пособие, которое я использовал в качестве примера, и метод, с которым у меня возникли проблемы, кажется, отлично работает там: https://www.youtube.com/watch?v=ou2yFJ-NWr8&index=2&list=PLpUMhvC6l7AOy4UEORSutzFus98n-Es_l