java - 使用 JSON 参数从 PHP 调用 Java

标签 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]?

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

谢谢

最佳答案

要将其全部作为单个字符串传递,请在其两侧加上引号。

所以如果你使用它应该可以工作

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/

相关文章:

java - 在 java 中使用默认构造函数,即使存在参数化构造函数

java - 如何在 JPA/Spring-Data JPA 中使用审计?

php - 如何在 Codeigniter 中查询 2 表数据库

javascript - 计算 JavaScript 数组中相同值出现的次数

java - 如何从 jOOQ 查询中删除子句(order by)

java - WebSphere 身份验证问题——也可能打开文件

javascript - PHP:将变量传递给javascript

javascript - 如何使用jquery ajax调用php函数

java - 将字符串中字母的出现次数计数到 26 的 int 数组中

java - 二维字符串数组中基于整数的排序