gpt4 book ai didi

java - 未命名的json数组到java

转载 作者:行者123 更新时间:2023-11-29 08:01:25 25 4
gpt4 key购买 nike

我有以下字符串:

"[{\"type\":\"string\",\"value\":\"value1\",\"field\":\"label\"},
{\"type\":\"string\",\"value\":\"value2\",\"field\":\"address_unique\"}]"

我想把它变成 java GSON JsonObject 数组/列表,以便调用类似的东西:

myJsonObjs[i].getAsJsonPrimitive("value").getAsString();

实现这一目标的最短路径是什么?我试过像这样设置一个 bean:

public static class Filter {
@SerializedName("type")
private String type;
@SerializedName("value")
private String value;
@SerializedName("field")
private String field;

//getters, setters and ctor
}

但我找不到使用 JsonParser 或 Gson 将上面的字符串反序列化为该 bean 的数组/列表的方法。特别是我试过

Gson gson = new Gson();
gson.fromJson(json_string, Filter[].class);

(其中 json_string 是上面的字符串)但这给了我一个

IllegalStateException: Expected BEGIN_ARRAY but was STRING

感谢您的帮助!

最佳答案

这是一种实现方式:

final String json = "[{\"type\":\"string\",\"value\":\"value1\",\"field\":\"label\"},{\"type\":\"string\",\"value\":\"value2\",\"field\":\"address_unique\"}]";
final JsonParser parser = new JsonParser();
final JsonElement rootElement = parser.parse(json);
final JsonArray values = rootElement.getAsJsonArray();
for (final JsonElement value : values) {
final JsonObject obj = value.getAsJsonObject();
final Filter filter = new Filter();
filter.setType(obj.get("type"));
filter.setValue(obj.get("value"));
filter.setField(obj.get("field"));
}

这是一种更自动化的方式:

final String json = "[{\"type\":\"string\",\"value\":\"value1\",\"field\":\"label\"},{\"type\":\"string\",\"value\":\"value2\",\"field\":\"address_unique\"}]";
final TypeToken<List<Filter>> token = new TypeToken<List<Filter>>() {
};
final Gson gson = new Gson();
final List<Filter> values = gson.fromJson(json, token.getType());

关于java - 未命名的json数组到java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14205743/

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