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 {

問題は次のとおりです。「メイン」コンストラクターは単純な文字列ではなく 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

すべてを 1 つの文字列として渡すには、引用符で囲みます。

したがって、使用すると機能するはずです

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"

EDIT:最初に、文字列内の引用符をエスケープする必要があると書いたと述べました。これをテストしたところ、そうではありません。例:

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 に答える