Java 访问lambda表达式中的JSONObject字段值
我对Java非常陌生,对函数编程也很熟悉。在这里,我试图编写一个最简洁的工厂方法,基于从API检索的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
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]”),记录))
我遇到了两个问题
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喜欢详尽的解决方案我很高兴它奏效了,一定要继续编辑!