Java 8 : How to write lambda stream to work with JsonArray?

标签 java lambda java-8 java-stream

我对 Java 8 lambda 和其他东西很陌生...我想编写一个 lambda 函数,它接受一个 JSONArray,遍历它的 JSONObject 并创建特定字段的值列表。

例如,一个接受 JSONArray 的函数:[{name: "John"}, {name: "David"}] 并返回 [“约翰”、“大卫”]

我写了下面的代码:

import org.json.simple.JSONArray;
import org.json.simple.JSONObject;

public class Main {
    public static void main(String[] args) {
        JSONArray jsonArray = new JSONArray();
        jsonArray.add(new JSONObject().put("name", "John"));
        jsonArray.add(new JSONObject().put("name", "David"));
        List list = (List) jsonArray.stream().map(json -> json.toString()).collect(Collectors.toList());
        System.out.println(list);
    }
}

但是,我得到一个错误:

Exception in thread "main" java.lang.NullPointerException

你知道怎么解决吗?

最佳答案

尝试使用 IntStream。

List<String> jsonObject = IntStream
       .range(0,jsonArray.size())
       .mapToObj(i -> jsonArray.getJSONObject(i))
       .collect(Collectors.toList());

关于Java 8 : How to write lambda stream to work with JsonArray?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44595433/

相关文章:

java - Spring data jpa + 连接2个表

java - Spring MVC Web 应用程序 : No default constructor found

java - 我什么时候应该使用 Java-8 Streams?

JavaDoc - 未声明的类型变量

lambda - Java 8 - 在 List 中存储 lambdas

java - 如何将 Optional<Object> 转换为 Optional<String>

java - 是否可以使用 hadoop 2.5.2 在 oozie 4.1.0 中运行 map reduce 作业

java - keystore 被篡改或密码不正确

c++ - 为什么我无法通过 lambda 捕获 "this"指针?

Java 8 Bifunction 内的 MapcomputeIfPresent boolean 检查