以下是我想在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?
更新
我不是要求提供帮助我完成上述操作的库列表,我已经知道它们并且显然正在使用它们。我也不需要了解他们的表现。 我要求更好的实现(如果它存在),如果Java没有提供这样的功能,那也可以是一个公认的答案。 此外,还有一个在Java中本地执行相同操作的示例。
答案 0 :(得分:1)
好吧,有几个库可用于序列化和反序列化json
之间的对象。
GSON是最简单的一个,您可以将POJO
(计划旧的Java对象)转换为JSON
而不注释它们。
LoganSquare是用于此目的的最佳库,它需要您注释您的字段,但性能非常高。
Github页面实际上讲述了LoganSquare与其他选项的基准研究。
还有其他一些像Moshi和Jackson,但考虑到平台的限制,我发现LoganSquare
是最好的。
就Native功能而言,Java到目前为止还没有提供 任何这样的实用程序,如果有人对
Third partylibs
不感兴趣,我上面提到的项目都是开源对象, 一个人可以分叉它们并根据一个人实现自己的版本 usecases。
答案 1 :(得分:0)
使用Gson你可以试试这样的东西,我不确定你想在这里读到的类型:
vagrant up