繁体   English   中英

如何展开 java class 中的所有变量

[英]How to expand all variables in java class

我想扩展 class 中的所有变量,然后将它们转换为 json 字符串。 例如:

class A {
   int a1;
   double a2;
   public A(int a1, double a2) {
      this.a1 = a1;
      this.a2 = a2;
   }
}
class B {
   string b1;
   A a;
   public B(A a, string b1) {
      this.a = a;
      this.b1 = b1;
   }
}

现在我有 B 级 object。

B b = new B(new A(1, 2.5), "test");

最后想把B转换成JSON,但是不是正常的JSON,我要展开所有变量

像这样

{
  "a1": 1,
  "a2": 2.5,
  "b1": "test"
}

不低于一

{
  "a": {"a1": 1, "a2": 2.5},
  "b1": "test"
}

我用的是Jackson,一般怎么实现。 我想我可以将所有元素放入一个 map,然后最后 writeValueAsString,但似乎不优雅

使用反射。 您可以在 class 中获取声明字段的数组,然后(通过递归)您可以从中创建 JSON 数据。

Object o=yourobject;
for(Field field : o.getClass().getFields()) {
        String name=field.getName();
        Class<?> type=field.getType();
        Object value=field.get(o);//you can recursively parse 'value' as well
}

然后你可以直接在 json 中使用原始字段的值。

关于反射的有用帖子: 什么是反射以及它为什么有用?

暂无
暂无

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

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