我需要从 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 这是四个参数
java SomeClass“这是一个参数”
编辑:最初我提到你必须转义字符串中的引号;刚刚测试了这个,事实并非如此。示例:
java SomeClass“这“仍然”是一个参数”
关于java - 使用 JSON 参数从 PHP 调用 Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18605274/