Java-8 JSONArray到HashMap
我正试图通过Java-8 JSONArray到HashMap,java,json,lambda,java-8,java-stream,Java,Json,Lambda,Java 8,Java Stream,我正试图通过streams和Lambdas将JSONArray转换为Map。以下操作不起作用: org.json.simple.JSONArray jsonArray = new org.json.simple.JSONArray(); jsonArray.add("pankaj"); HashMap<String, String> stringMap = jsonArray.stream().collect(HashMap<String, String>::new, (
streams
和Lambdas
将JSONArray
转换为Map
。以下操作不起作用:
org.json.simple.JSONArray jsonArray = new org.json.simple.JSONArray();
jsonArray.add("pankaj");
HashMap<String, String> stringMap = jsonArray.stream().collect(HashMap<String, String>::new, (map,membermsisdn) -> map.put((String)membermsisdn,"Error"), HashMap<String, String>::putAll);
HashMap<String, String> stringMap1 = jsonArray.stream().collect(Collectors.toMap(member -> member, member -> "Error"));
而第4行
给出了以下错误:
Type mismatch: cannot convert from Object to HashMap<String,String>
类型不匹配:无法从对象转换为HashMap
我正在努力学习Lambdas和streams。有人能帮我吗?看来json simple的
JSONArray
扩展了ArrayList
,但没有提供任何泛型类型。这会导致流
返回一个也没有类型的流
知道了这一点,我们可以在List
的界面上编程,而不是JSONArray
List<Object> jsonarray = new JSONArray();
List jsonarray=new jsonarray();
这样做将允许我们像这样正确地流式处理:
Map<String, String> map = jsonarray.stream().map(Object::toString).collect(Collectors.toMap(s -> s, s -> "value"));
Map Map=jsonarray.stream();
我认为这不一定是重复的。这是对JSONArray的转换,问题是使用lambdas@ozOli在否决或对您认为错误的事情做出反应之前,请仔细阅读/思考该赋值将生成编译器警告。它应该是List
,而不是List
@VGR,因为它不会生成任何警告。我刚试过。它会根据您的设置生成警告。但是,它也会在上生成一个警告。add
所以我没有考虑太多。它会在JSONArray
的每个元素上调用toString
,JSONArray
的toString
将被调用
Map<String, String> map = jsonarray.stream().map(Object::toString).collect(Collectors.toMap(s -> s, s -> "value"));