我从一个 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
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]