0

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

我可以拆分数组部分并使用不同的分隔符,但也许有一种更优雅的方式来做到这一点。

谢谢

4

2 回答 2

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"

于 2013-09-04T04:35:46.587 回答
0

在您的 Java 代码中公开一个接口。使用PHP/Java Bridge从 PHP 调用它

于 2013-09-04T04:41:40.367 回答