Gson -> импорт JSON с объектами - PullRequest
0 голосов
/ 08 апреля 2020

Я пытаюсь использовать Gson для импорта файла Json со структурой созданных мною классов. Но, хотя метод Json работает, структуры объектов нет.

У меня есть класс под названием Tienda, который имеет два атрибута: (String) Name, (List) ventas. Где «Venta» - это другой класс, но когда я вызываю метод для Json, результатом является список объектов «Tienda», где атрибут List равен нулю. Должен ли я сделать что-то другое?

Вот так я получаю файл в список:

Type listOfMyClassObject = new TypeToken<ArrayList<Tienda>>() {}.getType();
        List<Tienda> tiendas= new GsonBuilder().setDateFormat("dd/MM/yyy").create().fromJson(new FileReader("C:\\Archivos\\Ejemplo JSON Ventas.JSON"), listOfMyClassObject);

И когда я вижу содержание результата, это выглядит так:

Результат такой:

Если кто-то знает, как решить эту проблему, я ценю ваш ответ, большое спасибо.

С наилучшими пожеланиями,

1 Ответ

0 голосов
/ 08 апреля 2020

Я думаю, у вас неправильное поле типа в классе. Поле должно иметь тип Дата (java .util.Date, java. sql .Timestamp, java. sql .Date)

. Это образец задачи для получения объект даты

//simple Object
Tienda demo = new GsonBuilder().setDateFormat("dd/MM/yyy").create().fromJson(json, Tienda.class);

//array
List<Tienda> demo = new GsonBuilder().setDateFormat("dd/MM/yyy").create().fromJson(json, type);

это мой пример класса "Tienda"

import java.util.Date;

public class Tienda {
  public Date ventas;
}

Я написал еще несколько тестов, возможно, они помогут вам решить эту проблему подробнее

import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import org.junit.Test;

import java.lang.reflect.Type;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import static org.junit.Assert.assertEquals;

public class FormatData {

  @Test
  public void testDeserializeArray() {
    //given
    String json = "[{\"ventas\":\"08/04/2020\"}, {\"ventas\":\"08/03/2020\"}]";
    Type type = new TypeToken<ArrayList<Tienda>>() {
    }.getType();
    //when
    List<Tienda> demo = new GsonBuilder().setDateFormat("dd/MM/yyy").create().fromJson(json, type);
    //then
    assertEquals(2, demo.size());
    assertEquals(1586296800000L, demo.get(0).ventas.getTime());
    assertEquals(1583622000000L, demo.get(1).ventas.getTime());
  }

  @Test
  public void testSimpleDeserialize() {
    //given
    String json = "{\"ventas\":\"08/04/2020\"}";
    //when
    Tienda demo = new GsonBuilder().setDateFormat("dd/MM/yyy").create().fromJson(json, Tienda.class);
    //then
    assertEquals(1586296800000L, demo.ventas.getTime());
  }


  @Test
  public void testSerialize() {
    //given
    Tienda demo = new Tienda();
    demo.ventas = new Date(1586296800000L);
    //when
    String json = new GsonBuilder().setDateFormat("dd/MM/yyy").create().toJson(demo);
    //then
    assertEquals("{\"ventas\":\"08/04/2020\"}", json);
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...