如何在Java中从JSONObject获取一个List值

k2fxgqgv  于 2022-12-15  发布在  Java
关注(0)|答案(3)|浏览(460)

我有一个如下的JSON:

{"data":["str1", "str2", "str3"]}

我想得到一个List,即["str1", "str2", "str3"]
我的代码是:

JSONObject json = new JSONObject();
List list = new ArrayList();
...
// adding data in json
...
list = (List) json.get("data");

这样不行。

goqiplq2

goqiplq21#

可以将此数据作为JsonArray获取

hfsqlsce

hfsqlsce2#

你可以自定义一些类似的代码

public static void main(String[] args) throws ParseException {
        String data = "{\"data\":[\"str1\", \"str2\", \"str3\"]}";
        JSONObject json = new JSONObject(
                data);
         
        JSONArray jasonArray = json.getJSONArray("data");
        List list = new ArrayList();

        int size = jasonArray.length();
        int i = 0;
        while (i < size) {
            list.add(jasonArray.get(i));
            i++;
        }

        System.out.println(list);

    }
6ie5vjzr

6ie5vjzr3#

您希望使用Java代码解析JSON字符串。建议使用Java的JSON库。下面的代码使用Gson。有许多在线示例,如Convert String to JsonObject with Gson。您还应该熟悉Gson API

import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

import java.util.ArrayList;
import java.util.List;

public class JsonList {

    public static void main(String[] args) {
        String json = "{\"data\":[\"str1\", \"str2\", \"str3\"]}";
        JsonElement elem = JsonParser.parseString(json);
        if (elem.isJsonObject()) {
            JsonObject obj = elem.getAsJsonObject();
            elem = obj.get("data");
            if (elem.isJsonArray()) {
                JsonArray arr = elem.getAsJsonArray();
                List<String> list = new ArrayList<>();
                int count = arr.size();
                for (int i = 0; i < count; i++) {
                    elem = arr.get(i);
                    if (elem.isJsonPrimitive()) {
                        String str = elem.getAsString();
                        list.add(str);
                    }
                }
                System.out.println(list);
            }
        }
    }
}

运行以上代码将得到以下输出:

[str1, str2, str3]

还有其他方法可以将JsonArray转换为List。上面的方法不是唯一的方法。正如我前面所写的,仔细阅读API文档并搜索Internet。

相关问题