gpt4 book ai didi

java - 如何使用 flexjson.deserializer 在 java 中将 jsonarray 反序列化为 List

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

在客户端,我构造了一个像这样的 JSOnARRAY:

{"filterEntries":[{"dataName":"mainContact","filterValue":"BILLGATES"}]}.

在服务器端 (java),我可以使用以下方法取消值:

jfilter = JSONValue.parse(jsonFilterStr); //jsonFilterStr={"filterEntries":[{"dataName":"mainContact","filterValue":"BILLGATES"}]}.

JSONArray jFilterEntries = (JSONArray) jfilter.get("filterEntries");
for (int i=0;i<jFilterEntries.size();i++){
JSONObject jFilterEntry = (JSONObject) jFilterEntries.get(i);
String dataName = (String) jFilterEntry.get("dataName");
String filterValue = (String) jFilterEntry.get("filterValue");
}

但是现有的应用程序正在使用 flex.json.deserializer,而我无法使用 flex.json.deserializer 实现相同的目的。我该如何进行?我想做这样的事情:

JSONDeserializer jsonDeserializer = new JSONDeserializer();
jsonDeserializer.use(null, List.class);
List<Map<String,String>> lMap= (List<Map<String,String>>)jsonDeserializer.deserialize(params);

最佳答案

记住包裹数组的顶部对象。你也必须处理它。您必须告诉它期望列表中有一个 map 。为此,您必须使用路径表达式“values”指定列表中包含的类型。

Map<String,List<Map<String,String>>> result = new JSONDeserializer<Map<String,List<Map<String,String>>>>()
.use("values",List.class)
.use("values.values", Map.class)
.deserialize( json);

List<Map<String,String>> filterEntries = result.get("filterEntries");

更新:添加新关键字,并使右侧的泛型类型与左侧匹配。

关于java - 如何使用 flexjson.deserializer 在 java 中将 jsonarray 反序列化为 List<Map>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4972038/

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