gpt4 book ai didi

java - 在父类(super class)之后序列化子类?

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

我找不到任何关于此的文档,但似乎 Gson 在父类(super class)的字段之前序列化子类的字段:

class G9 {
static class B { String s1 = "1"; String s2 = "2"; }
static class C extends B { String s3 = "3"; }
public static void main(String args[]) {
System.out.println(new Gson().toJson(new C()));
}
}

该程序产生以下输出:

/cygdrive/c/Java/jdk1.8.0/bin/javac -classpath gson-2.1.jar -g G9.java  && /cygdrive/c/Java/jdk1.8.0/bin/java -classpath ".;gson-2.1.jar" G9
{"s3":"3","s1":"1","s2":"2"}

我希望它是以下内容:

{"s1":"1","s2":"2","s3":"3"}

我意识到我可以用 TypeAdapter 来做到这一点但这基本上等于

  • 实现序列化
  • 弄清楚如何将反序列化委托(delegate)给 Gson或者也实现它。

有没有更简单的方法来实现这一目标?我想我正在寻找new FieldOrderingTypeAdapter<C>(C.class, "s1", "s2", "s3")GsonBuilder.setFieldOrder("s1", "s2", "s3")或其他什么。

我正在使用Gson 2.1 .

最佳答案

来自JSON order mixed up :

You cannot and should not rely on the ordering of elements within a JSON object.

From the JSON specification at http://www.json.org/

 An object is an unordered set of name/value pairs

As a consequence, JSON libraries are free to rearrange the order of the elements as they see fit. This is not a bug.

据我所知,没有简单的方法可以解决这个问题。

关于java - 在父类(super class)之后序列化子类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21151189/

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