0

现在我正在使用 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}

我如何省略这些字段。非常感谢。

4

1 回答 1

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 库并手动完成。尝试告诉这些库如何将您的对象转换为您发布的内容与手动编写它一样多。

于 2011-06-07T22:44:00.947 回答