使用JSON参数从PHP调用Java


Call Java from PHP with JSON arguments

我需要从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]?

我可以拆分数组部分并使用不同的分隔符,但也许还有一种更优雅的方法。

感谢

要将其作为单个字符串传递,请在其周围加引号。

因此,如果你使用,它应该可以工作

exec("java StepRegTest.Main '"" . $input . "'" 2>&1", $output); //Note the added quotes

这个问题与String与String[]无关,它只是一个问题,如果你不把它们放在引号里,函数参数就会用空格分隔。比较:

java SomeClass these are four arguments

java SomeClass "this is one argument"

编辑:最初我提到写过,你必须在字符串中转义引号;只是测试了一下,事实并非如此。示例:

java SomeClass "this is "still" one argument"

在Java代码中显示一个接口。使用PHP/Java Bridge 从PHP调用它