我必须得到像这样的Json字符串..
{"a":{"b":{"c":"5"}}}
现在从Gson文档我能够生成String.But我需要三个类来生成它,我的实现有什么问题,是否有任何可能的方法来减少相同实现的类,
请找到用于生成此类的类..
public class c { String c="5";}
public class b {
@SerializedName("b")
c cobj = new c();}
public class a {
@SerializedName("a")
b cobj =new b();}
public static void main (String args[]){
Gson gs=new Gson();
a aobj=new a();
System.out.println(gs.toJson(aobj));
}
请帮助......
答案 0 :(得分:2)
没错。在JSON中,{}
表示一个对象,因此您的字符串为您提供了三个嵌套对象。请参阅JSON syntax
如果您正在寻找内部类,static
内部类开箱即用,可用于序列化和反序列化。不确定以下是否比你的要短得多,因为三组括号意味着三个类。由于您的字段名称不同,它意味着三个不同的类,您的内部数据结构应该被开发为具有逻辑意义,而不仅仅是“更短”
您可以通过重命名字段来删除注释,使它们与您想要的字段匹配。
class TopObj {
static class AClass {
static class BClass {
String c = "5";
};
B b = new b();
};
a a = new a();
};
另一种观点是,所有三个类都是相同的类类型,但只使用不同的字段。转换为JSON时,仅填充具有值的字段。如上所述,您的数据意味着不同的类,但您可以使用一个类定义 -
class Trickery {
Trickery a;
Trickery b;
String c;
};
然后你只使用所述的字段,
Trickery top = new Trickery();
top.a = new Trickery();
top.a.b = new Trickery();
top.a.b.c = "5";
System.out.println(gson.toJson(top));