繁体   English   中英

在超类之后序列化子类?

[英]Serialize sub-class after super-class?

我找不到任何文档,但是Gson似乎先将子类的字段序列化为超类的字段:

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做到这一点,但这实际上等于

  • 实现序列化
  • 弄清楚如何将反序列化委托给Gson或也要实现。

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

我正在使用Gson 2.1

JSON顺序混合起来

您不能也不应该依赖JSON对象中元素的顺序。

来自http://www.json.org/的JSON规范

  An object is an unordered set of name/value pairs 

因此,JSON库可以自由地按自己认为合适的方式重新排列元素的顺序。 这不是错误。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM