我需要从php执行Java代码并传递JSON字符串作为参数。
PHP部分:
$json_arr["regrType"] = 3;
$json_arr["fund_id"] = 25106478;
$json_arr["factors"] = array(2,7,18,19);
$input = json_encode($json_arr);
exec("java StepRegTest.Main " . $input . " 2>&1", $output);
Java条目:
public class Main {
public static void main(String[] args) throws Exception {
问题是:因为“main”构造函数只能接受String []数组而不是简单字符串,所以Java脚本将JSON字符串分解为数组 - 如:
args[0] = "regrType:3"
args[1] = "fund_id:25106478"
args[2] = "factors:[2"
如何强制它获取整个JSON输入字符串? 如果我找不到在Java中获取完整JSON字符串的方法,我可以用数组作为JSON元素 - 请参阅args [2]?
我可以拆分数组部分并使用不同的分隔符,但也许有一种更优雅的方法。
由于
答案 0 :(得分:2)
要将所有内容作为单个字符串传递,请在其周围加上引号。
所以如果你使用
它应该有用exec("java StepRegTest.Main \"" . $input . "\" 2>&1", $output); //Note the added quotes
这个问题与String vs. String []无关,它只是一个问题,如果你不把它们放在引号中,函数参数是由空格分隔的。比较:
java SomeClass these are four arguments
java SomeClass "this is one argument"
java SomeClass "this is "still" one argument"
答案 1 :(得分:0)
在Java代码中公开接口。使用PHP/Java Bridge
从PHP调用它