Java:循环通过JSON字符串(无法转换为JsonArray(gson)

时间:2018-03-24 22:01:43

标签: java json loops gson

我通过api获得了一个json对象:

Gson gson = new Gson();
JsonObject users = gson.fromJson(reader, JsonObject.class)

这是我的json对象:

{"users":"[{\"user_id\": \"100011\", \"name\": \"Tim Clark\"}, {\"user_id\": \"100083\", \"name\": \"Timmy Kent\"}]"}

我尝试遍历所有用户

    JsonArray usersArray = users.getAsJsonArray();
    for (JsonElement ua : usersArray) {
        JsonObject ua = ua.getAsJsonObject();
        String name = ua.get("name").getAsString();
        System.out.println(name);
    }

也试过这个

    JsonArray usersArray = users.get("users").getAsJsonArray();
    for (JsonElement ua : usersArray) {
        JsonObject ua = ua.getAsJsonObject();
        String name = ua.get("name").getAsString();
        System.out.println(name);
    }

但我总是得到像这样的例外

java.lang.IllegalStateException: Not a JSON Array: "[{\"user_id\": \"100011\", \" ....

在我看来,它是一个有效的json数组,我想念什么?

1 个答案:

答案 0 :(得分:0)

你的JsonArray在引号之间:它被评估为一个字符串

{"users":[{\"user_id\": \"100011\", \"name\": \"Tim Clark\"}, {\"user_id\": 
\"100083\", \"name\": \"Timmy Kent\"}]}

应该工作(数组中的引号也不需要被转义,比如“users”)