java调用python,并接收python返回对象数组,但是取对象里的值的时候取不出来
这是python返回形式
java调用python,并接收python返回对象数组,但是取对象里的值的时候取不出来
这是python返回形式
import json
import requests
def power(x, y):
d = {"name":x,"age":y};
c = {"data":d}
return json.dumps(c);
#print(power("lisi",12));
这时候在python中就可以使用发送post等请求进行请求数据了。
注意:由于可能安装了python,故在python的安装目录下会有对应的pip执行文件,而jython也有这个执行文件,他们安装的东西放的地方不一样,应该在环境变量中设置(哪个在上面,哪个就先找到从而执行)。
jython安装requests模块和python是一样的。
pip install requests
执行完成之后,可以到jython 安装目录下找到安装的requests模块。
另外一点切记,别瞎用软件编辑python,最好用专门的软件,空格和tab不一样。
由于Markdown不支持Java代码,因此我将在下面提供一个Java代码框,以便说明如何在Java中调用Python并接收返回的对象数组。请注意,以下代码只是示例,并不一定适用于你的具体情况,你需要根据实际情况进行调整。
首先,你需要确保你的Java程序可以调用Python代码。你可以使用Java的ProcessBuilder
类来实现这一点。下面是一个基本的示例:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class PythonCaller {
public static void main(String[] args) {
try {
ProcessBuilder pb = new ProcessBuilder("python", "your_python_script.py");
Process process = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
// 在此处处理Python输出的每一行
System.out.println(line);
}
reader.close();
int exitCode = process.waitFor();
System.out.println("Exited with code " + exitCode);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
请将your_python_script.py
替换为你实际的Python脚本文件名。
接下来,你需要了解如何在Python中返回一个对象数组给Java。你可以使用json
模块将Python对象转换为JSON格式,并将其输出到标准输出。在Java中,你可以使用ProcessBuilder
中的getInputStream()
方法来读取Python脚本的输出,然后使用Java的json
库解析JSON并获取对象数组。你可以参考以下示例代码:
Python脚本(your_python_script.py):
import json
# 创建一个对象数组
objects = [{'id': 1, 'name': 'Object 1'}, {'id': 2, 'name': 'Object 2'}, {'id': 3, 'name': 'Object 3'}]
# 将对象数组转换为JSON格式的字符串
json_str = json.dumps(objects)
# 打印JSON字符串到标准输出
print(json_str)
Java代码:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import com.google.gson.Gson;
public class PythonCaller {
public static void main(String[] args) {
try {
ProcessBuilder pb = new ProcessBuilder("python", "your_python_script.py");
Process process = pb.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
StringBuilder jsonBuilder = new StringBuilder();
String line;
while ((line = reader.readLine()) != null) {
jsonBuilder.append(line);
}
reader.close();
// 解析JSON字符串为对象数组
Gson gson = new Gson();
YourObject[] objects = gson.fromJson(jsonBuilder.toString(), YourObject[].class);
// 在此处处理对象数组
for (YourObject obj : objects) {
System.out.println("ID: " + obj.getId() + ", Name: " + obj.getName());
}
int exitCode = process.waitFor();
System.out.println("Exited with code " + exitCode);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
// 你的对象类
static class YourObject {
private int id;
private String name;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
}
请注意,你需要在YourObject
类中添加适合你的对象的属性和访问方法。
这就是一个基本的Java调用Python并接收返回的对象数组的示例。请根据你的实际情况进行调整和扩展。
希望这可以帮助到你!如果你还有其他问题,请随时提问。