Java 访问lambda表达式中的JSONObject字段值

Java 访问lambda表达式中的JSONObject字段值,java,json,lambda,functional-programming,Java,Json,Lambda,Functional Programming,我对Java非常陌生,对函数编程也很熟悉。在这里,我试图编写一个最简洁的工厂方法,基于从API检索的JSONArray创建一个List。这是我所想的一个简化版本 public List getManagers(HashMap参数)抛出IOException、interruptedeexception{ JSONArray记录=(JSONArray)api.getData(“管理器”,参数).get(“记录”); records.forEach(x->newmanager(x.get(“First

我对Java非常陌生,对函数编程也很熟悉。在这里,我试图编写一个最简洁的工厂方法,基于从API检索的
JSONArray
创建一个
List
。这是我所想的一个简化版本

public List getManagers(HashMap参数)抛出IOException、interruptedeexception{
JSONArray记录=(JSONArray)api.getData(“管理器”,参数).get(“记录”);
records.forEach(x->newmanager(x.get(“FirstName”)、x.get(“LastName”))
我将如何在python中实现这一点(我有很大的偏见)

manager\u list=list(映射(lambda x:manager(x[“FirstName]”,x[“LastName]”),记录))
我遇到了两个问题

  • 访问lambda表达式中的JSONObject字段
  • 尽管x是一个
    JSONObject

    records.forEach(x->System.out.println(x.getClass());
    类org.json.JSONObject
    
    x.get(“FirstName”)
    在lambda中不起作用。是因为
    .get()
    是一个实例方法还是我缺少了其他方法

  • 轻松将
    管理器添加到列表中
  • 这行不通

    List managers=records.forEach(x->new Manager(x.get(“FirstName”)、x.get(“LastName”))
    
    因为
    forEach
    返回
    void
    forEach
    是否有可以返回任何类型的
    Interable
    集合的表亲

    由于我是java新手,我既对实际问题的实现感兴趣,也对现代java中函数编程的一般性讨论感兴趣

    public List getManagers(HashMap参数)抛出IOException、interruptedeexception{
    JSONArray记录=(JSONArray)api.getData(“雇员”,参数).get(“记录”);
    列表管理器=新的ArrayList();
    records.forEach(jsonRecord->{
    JSONObject记录=(JSONObject)jsonRecord;
    添加(新的管理器(record.getString(“FirstName”)、record.getString(“LastName”));
    });
    回报经理;
    }
    

    您可能必须将每个项强制转换为
    JSONObject
    才能访问属性。

    您确定
    org.json.JSONObject
    Iterable
    JSONObject
    ,dunno.
    JSONArray
    是Iterable,当然。我使用
    System.out.println(x)显示单个json对象没有问题
    x.get('FirstName')
    您在这里使用单引号,只是想知道代码是如何编译的。@GyowannyPessattoQueiroz我的错。Correcting@TheHeadRush是的,我是那种分心的打字机,很有魅力,很简洁。我喜欢它。在接受它之前,我可以稍微修改一下你的答案吗(只是为了得到最终的
    列表和完整的实现)?像我这样的Noobs喜欢详尽的解决方案我很高兴它奏效了,一定要继续编辑!