在Java中创建JSON对象的方法

以下是我想在我的iOS(
Swift)和
Android(Java)应用程序中使用的JSON主体.

{
    "type" : "select",
    "args" : {
        "table"  : "todo",
        "columns": ["id", "title","completed"],
        "where"  : {"user_id": 1}
    }
}

在Swift中,将上面的内容转换为字典非常简单易行:

let params: [String: Any] = [
  "type" : "select",
  "args" : [
    "table"     : "todo",
    "columns"   : ["id","title","completed"],
    "where"     : ["user_id" : 1]
  ]
]

在Java中,我使用GSON来完成上述操作,但我觉得我的解决方案很丑陋而且太长

public class SelectQuery {

    @SerializedName("type")
    String type = "select";

    @SerializedName("args")
    Args args;

    public SelectTodoQuery(=) {
        args = new Args();
        args.where = new Where();
        args.where.userId = 1;
    }

    class Args {

        @SerializedName("table")
        String table = "todo";

        @SerializedName("columns")
        String[] columns = {
                "id","title","completed"
        };

        @SerializedName("where")
        Where where;

    }

    class Where {
        @SerializedName("user_id")
        Integer userId;
    }

}

有没有更好的方法在Java中执行此操作,以及如何在不使用GSON的情况下本地使用Java本地表示此JSON?

UPDATE

我没有要求提供一个帮助我完成上述工作的图书馆清单,我已经知道它们并且显然正在使用它们.我也不需要了解他们的表现.
我要求更好的实现(如果它存在),如果Java没有提供这样的功能,那也可以是一个公认的答案.
此外,还有一个在Java中本地执行相同操作的示例.

最佳答案 好吧,有几个库可用于对json进行序列化和反序列化对象.

GSON是最简单的一个,您可以将POJO(计划旧的Java对象)转换为JSON而无需注释它们.

LoganSquare是用于此目的的最佳库,它需要您注释您的字段,但性能非常高.

Github页面实际上讲述了LoganSquare与其他选项的基准研究.

《在Java中创建JSON对象的方法》

还有其他一些像MoshiJackson,但考虑到平台的局限性,我发现LoganSquare是最好的.

As far as Native capability is concerned, Java so far does not provide
any such utility and if someone is not interested in Third partylibs, the project I have mentioned above are all open source objects,
one can fork them and implement their own version based on one’s
usecases.

点赞