以下是我想在我的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与其他选项的基准研究.
还有其他一些像Moshi和Jackson,但考虑到平台的局限性,我发现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.