有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

json如何使用flexjson在java中将jsonarray反序列化为列表<Map>。反序列化程序?

在客户端,我构建了一个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。反序列化程序和我无法使用flex实现同样的功能。json。反序列化程序。我应该如何进行? 我想这样做:

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

共 (1) 个答案

  1. # 1 楼答案

    记住包裹阵列的顶部对象。你也必须处理好这件事。你必须告诉它,希望列表中有一张地图。为此,必须使用路径表达式“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");
    

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