gpt4 book ai didi

java - 如何使用 gson 将对象序列化为一个元素的列表

转载 作者:行者123 更新时间:2023-12-01 17:48:55 27 4
gpt4 key购买 nike

我有一些像这样的 json 字符串:

示例1

{
“小路”:{
“开始”:“abc”
},
“名称”:“ fork 1”
}

示例2

{
“小路”:[{
“开始”:“abc”
},
{
“开始”:“定义”
}],
“名称”:“ fork 1”
}

我想用一个 JAVA 对象进行序列化,如下所示:

@Data
public static class ForkNode {
private List<Path> path;
private String name;
}

@Data
public static class Path {
private String start;
}
new Gson().fromJson(jsonStr, ForkNode.class)

但是会抛出异常IllegalStateException:预期为 BEGIN_ARRAY,但在第 2 行第 11 列路径 $.path 处为 BEGIN_OBJECT

那么我如何将第一个示例视为一个元素的列表?或者有什么方法可以用一个对象序列化两种不同类型的 json 字符串?

最佳答案

我认为用 ONE 对象序列化两种不同类型的 json 字符串不是一个好方法。

对于示例1,对象应该是这样的:

@Data
public static class ForkNode {
// only one path
private Path path;
private String name;
}

@Data
public static class Path {
private String start;
}
new Gson().fromJson(jsonStr, ForkNode.class)

对于示例 2,对象应该是这样的:

@Data
public static class ForkNode {
// several paths
private List<Path> path;
private String name;
}

@Data
public static class Path {
private String start;
}
new Gson().fromJson(jsonStr, ForkNode.class)

在 JSON 中:

  • 对象直接括在大括号 {} 中,而 JSON
  • JSON 对象内用方括号 [] 括起来的数组。

还有一件事,如果您确实想这样做,我认为您需要自己实现自定义反序列化器。请引用Gson的文档。

关于java - 如何使用 gson 将对象序列化为一个元素的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60823895/

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