如何将id提取到java数组中?

问题描述 投票:0回答:1

我从一个 JSON 对象的 post 请求中获取下面的内容。 (String jsonString) 我正在尝试将 ids 提取到数组中。

{"description":"studentIDs", "ids": ["123", "456", "789"]}

我必须将“ids”提取到java数组中。

我必须使用 com.google.gson 库。

我尝试了下面的代码,但它给了我错误。

JsonObject jsonObject = JsonParser.parseString(jsonString).getAsJsonObject();
            
JsonArray arrJson = jsonObject.getAsJsonArray("ids");
String[] arr = new String[arrJson.size()];
for(int i = 0; i < arrJson.size(); i++)
    arr[i] = arrJson.get(i);    //Type mismatch: cannot convert from JsonElement to String
java json gson
1个回答
1
投票

尝试调用

getAsString()
JsonElement
:

获取字符串值
import com.google.gson.JsonArray;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;

import java.util.Arrays;

class Main {
    public static void main(String[] args) {
        String jsonString = "{\"description\":\"studentIDs\", \"ids\": [\"123\", \"456\", \"789\"]}";
        JsonObject jsonObject = JsonParser.parseString(jsonString).getAsJsonObject();
        JsonArray arrJson = jsonObject.getAsJsonArray("ids");
        String[] arr = new String[arrJson.size()];
        for (int i = 0; i < arrJson.size(); i++) {
            arr[i] = arrJson.get(i).getAsString();
        }
        System.out.println(Arrays.toString(arr));
    }
}

请注意,将 JSON 直接反序列化为 Java 对象可能会更干净:

import com.google.gson.Gson;

import java.util.List;

class StudentIDs {
    private String description;
    private List<String> ids;

    public String getDescription() {
        return description;
    }

    public void setDescription(String description) {
        this.description = description;
    }

    public List<String> getIds() {
        return ids;
    }

    public void setIds(List<String> ids) {
        this.ids = ids;
    }
}


class Main {
    public static void main(String[] args) {
        String jsonString = "{\"description\":\"studentIDs\", \"ids\": [\"123\", \"456\", \"789\"]}";
        Gson gson = new Gson();
        StudentIDs studentIDs = gson.fromJson(jsonString, StudentIDs.class);
        System.out.println(studentIDs.getIds());
    }
}

两种方法的输出:

[123, 456, 789]
© www.soinside.com 2019 - 2024. All rights reserved.