首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >超类之后的子类序列化?

超类之后的子类序列化?
EN

Stack Overflow用户
提问于 2014-01-16 00:30:07
回答 1查看 859关注 0票数 2

我找不到这方面的任何文档,但似乎Gson在超类的字段之前序列化了子类的字段:

代码语言:javascript
复制
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()));
  }
}

该程序产生以下输出:

代码语言:javascript
复制
/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"}

我希望做到以下几点:

代码语言:javascript
复制
{"s1":"1","s2":"2","s3":"3"}

我意识到我可以用TypeAdapter来做这件事,但这实际上相当于

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

有更容易的方法来实现这一点吗?我想我是在找new FieldOrderingTypeAdapter<C>(C.class, "s1", "s2", "s3")或者GsonBuilder.setFieldOrder("s1", "s2", "s3")什么的。

我正在使用Gson 2.1

EN

回答 1

Stack Overflow用户

发布于 2014-01-16 01:10:30

来自JSON order mixed up

您不能也不应该依赖于JSON对象中元素的排序。 来自http://www.json.org/的JSON规范 对象是一组无序的名称/值对。 因此,JSON库可以根据需要重新排列元素的顺序。这不是窃听器。

据我所知,没有简单的方法可以绕过这件事。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21151189

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档