gpt4 book ai didi

java - List 如何用 LinkedHashMap 填充,而不是用 Customclass 的实例填充?

转载 作者:太空宇宙 更新时间:2023-11-04 06:56:48 25 4
gpt4 key购买 nike

我无法理解为什么在下面的示例中,自定义类列表(response.results 和 results)充满了 LinkedHashMap。我预计在解析 JSON 输入流后,列表将充满自定义类,其类成员包含直接来自 JSON 的数据。相反,列表返回时包含 LinkedHashMap,即使它们是 Customclass 类型。

谁能解释一下吗?

Gson gson = new Gson();
Reader reader = new InputStreamReader(inputStream);

PlacesList response = gson.fromJson(reader, PlacesList.class);

List<Place> results = response.results;

使用的自定义类:

public class PlacesList implements Serializable {

@Key
public String status;

@Key
public String error_message;

@Key
public List<Place> results;

}

&

public class Place implements Serializable {

@Key
public String id;

@Key
public String name;

@Key
public String reference;

@Key
public String icon;

@Key
public String vicinity;

@Key
public Geometry geometry;

@Key
public String formatted_address;

@Key
public String formatted_phone_number;

@Override
public String toString() {
return name + " - " + id + " - " + reference;
}


public static class Geometry implements Serializable
{
@Key
public Location location;
}

public static class Location implements Serializable
{
@Key
public double lat;

@Key
public double lng;
}

}

最佳答案

JSON format除了它自己的原始类型之外,不包含任何类型信息。它是一种基于文本的格式,数组和对象分别映射到每种编程语言中存在的有序列表和有序键值对列表的任何概念。

因此,LinkedHashMap 是 Java 中 JSON 对象的自然表示。因此,这是大多数 JSON 反序列化器默认输出的内容。

要检索我使用过的所有 JSON 实现中的自定义对象,您需要提供 a custom deserializer class ,或对标准解串器的输出进行后处理。有时甚至可能需要自定义序列化程序通过在 JSON 流中插入一些类型信息来协助解决不明确的情况。

关于java - List<Customclass> 如何用 LinkedHashMap 填充,而不是用 Customclass 的实例填充?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22623549/

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