java - 如何使用GSON将json对象数组解析为JAVA二维数组?

标签 java arrays json gson

我有这样的 JSON 字符串:

[{
    "id": 3,
    "city": "Ilmenau",
    "floor": null,
    "housenumber": "35",
    "streetname": "Blumenstraße",
    "zip": "98693"
}, {
    "id": 4,
    "city": "Berlin",
    "floor": null,
    "housenumber": "54",
    "streetname": "Bogdansplatz",
    "zip": "194354"
}]

我需要将其解析为如下所示的二维数组: enter image description here 我怎样才能使用 GSON java 库? 现在我只写了这段代码,它返回一个列表:

String s=getJson("SELECT * FROM address;");

        JsonParser jsonParser = new JsonParser();
        JsonObject jo = (JsonObject)jsonParser.parse(s);
        JsonArray jsonArr = jo.getAsJsonArray("array");
        //jsonArr.
        Gson googleJson = new Gson();
        ArrayList jsonObjList = googleJson.fromJson(jsonArr, ArrayList.class);
        System.out.println("List size is : "+jsonObjList.size());
        System.out.println("List Elements are  : "+jsonObjList.toString());

但是上面的代码只适用于数组的 JSON 对象,不适用于我上面显示的字符串。

最佳答案

请您尝试以下操作并查看结果:

// String 's' holds the JSON 

JsonParser jsonParser = new JsonParser();
JsonArray jsonArray = (JsonArray) jsonParser.parse(s);

// this object is used to get the keys
JsonObject firstJsonObject = jsonArray.get(0).getAsJsonObject();        
Set<java.util.Map.Entry<String, JsonElement>> entrySet = firstJsonObject.entrySet();

// declare two dimensional array
Object[][] array = new Object[entrySet.size()][jsonArray.size() + 1];

// the first column of the two-dimensional array is populated
Iterator<java.util.Map.Entry<String, JsonElement>> itr = entrySet.iterator();
for (int i = 0; itr.hasNext(); i++) {
    array[i][0] = itr.next().getKey();
}

// the rest of the columns are populated
for (int i = 0; i < jsonArray.size(); i++) {
    JsonObject obj = (JsonObject) jsonArray.get(i);
    for (int j = 0; j < array.length; j++) {
        String key = array[j][0].toString();
        JsonElement value = obj.get(key);
        array[j][i + 1] = value instanceof JsonNull ? null : value.getAsString();
    }

}
// now the two dimensional array is fully populated

关于java - 如何使用GSON将json对象数组解析为JAVA二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38348719/

相关文章:

java - 如何在字段上使用 RuleBasedCollat​​or 对 Java 对象列表进行排序?

java - 使用 XML 文件持续更新网页

c++ - 如何找到给定数组中数字之间的最大乘法(限制为 100000 个数字)

java - 在java中使用反射查找复合类的所有属性

java - 在 Java 中从 JNI 设置值 : JNI java. lang.NoSuchFieldError

arrays - 影片剪辑数组 ActionScript 3

java - 如何从信号/阵列中剪切出模式?

javascript - 尝试从数组中的子对象创建数组

json - 将两个不同的 JSON 字段名称映射到一个 POJO 属性

javascript - 在函数内部定义外部作用域变量