gpt4 book ai didi

java - 用Gson解析Json以及列表的问题

转载 作者:行者123 更新时间:2023-11-30 07:11:33 25 4
gpt4 key购买 nike

我使用 Gson 解析从外部 API 返回的 JSON 字符串以表示 Java 类。一切正常,但我有一个无法解决的问题。

问题是外部 API 有时会返回如下 JSON:

{ Token: { TokenId : '123' } }

有时还有像这样的 JSON:

{ Token: [{ TokenId : '123' }, { TokenId : '124' }] }

如果我的类设置为包含 token 列表,那么 Gson 将无法解析第一个示例中的 JSON。在这两种情况下如何解析 JSON?

最佳答案

一种快速的方法如下

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

public class Clazz {
public static void main(String[] args) throws Exception {

String singularJson = "{ Token: { TokenId : '123' } }";
String multipleJson = "{ Token: [{ TokenId : '123' }, { TokenId : '124' }] }";

JsonElement jsonElementToken = new JsonParser().parse(multipleJson);
JsonElement jsonCollectionOrSingular = jsonElementToken.getAsJsonObject().get("Token");
if (jsonCollectionOrSingular.isJsonArray()) {
System.out.println("It is an collection and not a object");
JsonArray jsonArray = jsonCollectionOrSingular.getAsJsonArray();
System.out.println(jsonArray.get(0).getAsJsonObject().get("TokenId"));

} else {
System.out.println("It is an object and not a collection");
JsonObject jsonObject = jsonCollectionOrSingular.getAsJsonObject();
System.out.println(jsonObject.get("TokenId"));

}

}

关于java - 用Gson解析Json以及列表的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39163224/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com