gpt4 book ai didi

java - Gson -> 导入带有对象的 JSON

转载 作者:行者123 更新时间:2023-12-01 17:32:38 24 4
gpt4 key购买 nike

我正在尝试使用 Gson 导入带有我创建的类结构的 Json 文件。但是,虽然 toJson 方法有效,但对象的结构却无效。

我有一个名为“Tienda”的类,它有两个属性:(字符串)名称,(List<Venta>)ventas。其中“Venta”是其他类,但是当我调用 toJson 方法时,结果是对象“Tienda”列表,其中属性 List<Venta>一片空白。我应该做一些不同的事情吗?

这就是我将文件发送到 List<Tienda> 的方法:

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);

当我看到结果的内容时,它是这样的:

The result is this

最佳答案

我认为您在类里面的类型字段错误。该字段必须是日期类型(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);
}
}

关于java - Gson -> 导入带有对象的 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61089957/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com