java - Gson 实现 no.of classes 取决于花括号?

标签 java android gson

我必须得到一个像这样的 Json 字符串..

{"a":{"b":{"c":"5"}}}

现在根据 Gson 文档我可以生成字符串。但是我需要三个类来生成它,我的实现有什么问题吗,是否有任何可能的方法来减少相同实现的类,

请找到用于生成这个的类..

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));
}

请协助...

最佳答案

没有错。在 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));

关于java - Gson 实现 no.of classes 取决于花括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14331446/

相关文章:

java - 使用 Streams 的 JsonArray 循环

java - 如何使用下拉菜单的结果创建字符串?

android - 不支持 Intent 图像共享文件格式

android - 我/系统服务器: oneway function results will be dropped but finished with status OK and parcel size 4

java - 为什么淡入淡出 Activity 转换只能使用 Handler 而不能使用 Thread?

android - MalformedJsonException 仅在 Android Emulator 的单元测试期间抛出

java - 最小化 GWT 应用程序的编译大小

java - 将 MVC 模式应用于现有应用程序

java - SimpleProperties 用法

android - java.lang.NumberFormatException : Invalid double: "5b80393f7fca491488980fe1" in android