现在我正在使用org.json JSON库。
JSONArray data = new JSONArray();
for (PkgLoad pkgLoad : list) {
JSONArray row = new JSONArray();
row.put(Double.parseDouble(df.format(pkgLoad.ounces)));
row.put(pkgLoad.revolutions);
data.put(row);
}
jsonResponse.put("aaData", data);
这就是我构建数组的方式。逐行(我喜欢这样做。)如果有办法在任何其他库中逐行构建数据,请告诉我。
反正。通过这种方法,我得到了这个。
"aaData":[[2.55,6],[2.54,6],[2.53,6],[2.54,6],[2.55,6],[2.52,6],[2.55,6],[2.52,6],[2.54,6],[2.53,6]]}
没关系。字段名称保持不变。使用其他库我得到字段名称。所以它变成了这个。
"aaData":[["ounces" : 2.55, "revolutions" : 6], etc, etc}
如何省略此字段。非常感谢你。
答案 0 :(得分:2)
因此,使用Flexjson,您不会复制从数据模型(即PkgLoad)构建JSON所做的工作。如果您想将该对象转换为JSON,您可以执行以下操作:
List<PkgLoad> packages = new ArrayList<PkgLoad>();
packages.add( new PkgLoad( 24.3, 6 ) );
packages.add( new PkgLoad( 45.3, 5 ) );
packages.add( new PkgLoad( 23.3, 4 ) );
...
String json = new JSONSerializer().serialize( packages, "aaData" );
这将产生如下的JSON:
{ "aaData": [ { "ounces": 24.3, "revolutions": 6 }, { "ounces": 45.3, "revolutions": 5 }, { "ounces": 23.3, "revolutions": 4 } ] }
为什么呢?因为你给它的列表对象包含一个内部的对象,它有两个字段“盎司”和“革命”,这就是你得到的。
这很好,因为它是一行编码JSON而不需要编写大量样板代码来将对象模型转换为JSON。您需要灵活处理的是您的JSON输出将镜像(或多或少)您的对象模型设计。如果您对Flexjson,gson和jackson感到满意,那么他们将负责将您的对象转换为JSON的所有平凡任务,以便您可以重新编写代码。
但是,如果您必须使用与对象模型完全不同的JSON格式,最好使用org.json库并手动完成。试图告诉这些库如何将对象转换为类似于你发布的内容,这将是手动编写它的工作量。