使用JSON参数从PHP调用Java

时间:2013-09-04 04:11:53

标签: java php arrays json

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

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

由于

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调用它