【发布时间】:2017-12-21 20:56:48
【问题描述】:
我一直在尝试使用 Java 8 的 Stream api 对 JSONArray 进行排序。但是我想我无法正确完成类型转换。
我能得到的只是下面这段代码。,
String objects = "[\n" +
" {\n" +
" \"lat\": \"-16.408545\",\n" +
" \"lon\": \"-71.539105\",\n" +
" \"type\": \"0\",\n" +
" \"distance\": \"0.54\"\n" +
" },\n" +
" {\n" +
" \"lat\": \"-16.4244317845\",\n" +
" \"lon\": \"-71.52562186\",\n" +
" \"type\": \"1\",\n" +
" \"distance\": \"1.87\"\n" +
" },\n" +
" {\n" +
" \"lat\": \"-16.4244317845\",\n" +
" \"lon\": \"-71.52562186\",\n" +
" \"type\": \"1\",\n" +
" \"distance\": \"0.22\"\n" +
" }\n" +
" {\n" +
" \"lat\": \"-16.4244317845\",\n" +
" \"lon\": \"-71.52562186\",\n" +
" \"type\": \"1\",\n" +
" \"distance\": \"2.69\"\n" +
" }\n" +
"]";
JSONArray objectsArray = (JSONArray) new JSONParser().parse(objects);
objectsArray.stream().sorted(Comparator.comparing(a -> ((JSONObject) a).get("distance")));
我收到以下错误。
Error:(42, 62) java: incompatible types: inferred type does not conform to upper bound(s)
inferred: java.lang.Object
upper bound(s): java.lang.Comparable<? super java.lang.Object>
我还提到了this 问题。但我觉得这可以通过流更简单的方式完成。有任何想法吗?我对 JSONObject 使用以下依赖项
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1</version>
</dependency>
【问题讨论】:
-
您使用的是哪个
JSONArray类?例如,我发现javax.json.JSONArray扩展了List<JsonValue>,而不是List<JsonObject>,这是您的代码所期望的。
标签: java json java-stream