java - 将 python 列表返回给 Java

标签 java python jython

我有一个调用一些Python代码的Java应用程序。我在理解如何从 Python 返回列表到 java 时遇到一些问题。

假设我有一个非常简单的 python 模块,如下所示:

def myFunc(param):
    print param
    return [ ["a","b"] , ["c","d"] , ["e","f"] ]

还有一段调用该函数的java代码:

String funcName = "myFunc";
try {
    PythonInterpreter interpreter = new PythonInterpreter();
    interpreter.exec("from myModule import * \n");
    PyObject someFunc = interpreter.get(funcName);
    someFunc.__call__(new PyString(workspacePath),new PyString(deployName));
}
catch(Exception e){
    e.printStackTrace();
    throw new Exception("Error while generating client resources.", e);
}

如何将返回的对象转换为可以轻松迭代的对象?如何提取列表中存在的字符串?

我尝试用 PyList 或 Iterable PyObject 搞乱一些,但到目前为止没有成功。有什么想法吗?

谢谢

最佳答案

您可以构造 Java 对象。如果目标消费者是 Java 程序,那么这可能就是要做的事情。

import java.util.ArrayList as ArrayList
import java.lang.String as String
...
javaList = ArrayList()
for subList in [ ["a","b"] , ["c","d"] , ["e","f"] ]:
    javaSubList = ArrayList()
    for s in subList:
        javaSubList.add(String(s))
    javaList.add(javaSubList)
return javaList

关于java - 将 python 列表返回给 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28112158/

相关文章:

java - 如何在 java 中运行 python

java - 理解java代码有问题吗?

python - 从数据框中的列中选择特定值

java - 使用 Java 检索 python 脚本的输出

.net - 替换 for...if 数组迭代

Jython::嵌入式 PythonInterpreter 是否处理 Python 源代码编码?

java - Hashmap jdk1.7无锁get()和同步put()的线程安全

java - Dataflow JAVA SDK : Take the code as an input, 后台进程

java - 当我在我的类中使用 Serialized 并在 Scanner 中使用 transient 时,如何解决 NullPointerException?

java - Jython 打印所有终端输出/将输出分配为字符串