gpt4 book ai didi

java - 将java对象传递给python

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:12:59 25 4
gpt4 key购买 nike

我正在为我们的应用程序设计一个接口(interface)原型(prototype),以允许其他人使用 python,我们的应用程序是用 java 编写的。我想将我们的一些数据从 java 应用程序传递到 python 代码,但我不确定如何将对象传递给 python。我使用 Jython 使用简单参数完成了一个简单的 java->python 函数调用,发现它对我正在尝试做的事情非常有用。给出下面的类,然后我如何在 Python/Jython 中将它用作函数/类的输入:

public class TestObject 
{
private double[] values;
private int length;
private int anotherVariable;

//getters, setters
}

最佳答案

一个解决方案。您可以使用某种消息系统、队列或某种代理来序列化/反序列化,或在 python 和 java 之间传递消息。然后创建一些排序的 worker/producer/consumers 以将工作放在要在 python 或 java 中处理的队列上。

也可以考虑查看灵感:https://www.py4j.org/

py4j 被 pyspark 和 hadoop 类型的东西大量使用/用于 pyspark 和 hadoop 类型的东西。

更迅速地回答您的问题。

示例使用 json-simple .:

import org.apache.commons.io.FileUtils;
import org.json.simple.JSONObject;
//import org.json.simple.JSONObject;


public class TestObject
{
private double[] values;
private int length;
private int anotherVariable;
private boolean someBool;
private String someString;

//getters, setters

public String toJSON() {
JSONObject obj=new JSONObject();
obj.put("values",new Double(this.values));
obj.put("length",new Integer(this.length));
obj.put("bool_val",new Boolean(this.SomeBool));
obj.put("string_key",this.someString);
StringWriter out = new StringWriter();
obj.writeJSONString(out);
return out.toString();
}

public void writeObject(){
Writer writer = new BufferedWriter(
new OutputStreamWriter(
new FileOutputStream("anObject.json"), "utf-8")
)
)

writer.write(this.toJSON());
}

public static void setObject(){
values = 100.134;
length = 12;
anotherVariable = 15;
someString = "spam";
}
}

在 python 中:

class DoStuffWithObject(object):
def __init__(self,obj):
self.obj = obj
self.changeObj()
self.writeObj()

def changeObj(self):
self.obj['values'] = 100.134;
self.obj['length'] = 12;
self.obj['anotherVariable'] = 15;
self.obj['someString'] = "spam";

def writeObj(self):
''' write back to file '''
with open('anObject.json', 'w') as f:
json.dump(self.obj, f)

def someOtherMethod(self, s):
''' do something else '''
print('hello {}'.format(s))

import json
with open('anObject.json','r') as f:
obj = json.loads(f.read())
# print out obj['values'] obj['someBool'] ...
for key in obj:
print(key, obj[key])

aThing = DoStuffWithObject(obj)
aThing.someOtherMethod('there')

然后在java中读回对象。存在实现此想法的解决方案(JSON-RPC、XML-RPC 和变体)。视情况而定,您可能还想考虑使用类似 ( http://docs.mongodb.org/ecosystem/drivers/java/ ) 的好处,因为 mongo 执行 json。

参见:

更全面的队列列表:

引用资源:

关于java - 将java对象传递给python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30186343/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com