このエラーで多くの投稿を見ましたが、何も助けにはなりません。 はそうここに私の状況です:JSON文字列を変換するときに「無効なjsonプリミティブ」
JSONは、このようにjQueryで作成されてい:
json_zug_grp = [];
$('#bx_zuggrp:checked').each(function() {
var name = $(this).attr("name");
var value = $(this).val();
item = {}
item ["name"] = name;
item ["value"] = value;
json_zug_grp.push(item);
});
はこの後、私はこれで、PHPスクリプトにAJAX呼び出しを行う
:$.ajax({
url: 'psexec.php',
type: "POST",
cache: false,
async: false,
data:{
zug_grps:JSON.stringify(json_zug_grp)
},
success: function(text){
console.log(JSON.stringify(json_zug_grp));
}
});
console.logは私に出力を引用符で囲みます。
[{"name":"USB_R","value":"CN=USB_R,OU=ZuGrp,OU=SecGrp,DC=DOMAIN,DC=loc"},{"name":"DVD_R","value":"CN=DVD_R,OU=ZuGrp,OU=SecGrp,DC=DOMAIN,DC=loc"}]
そしてfinaly PHPスクリプトは、パラメータとしてJSON文字列とPS-スクリプトからはshell_execを行います
$zug_grps = $_POST["zug_grps"];
$para = " -zug_grps '".$zug_grps."'";
$psPath = "powershell.exe";
$psDIR = "C:\\path\\to\\scriptfolder\\";
$psScript = "script.ps1";
$runScript = $psDIR. $psScript;
$runCMD = $psPath." ".$runScript." ".$para;
$output = shell_exec($runCMD);
echo $output;
また、このエコーは引用符でJSON文字列を与えます。
script.ps1は次のようになります。
param(
[string]$zug_grps
)
`Write-Host $zug_grps`
出力は次のようになります。
[{name:USB_R,value:CN=USB_R,OU=ZuGrp,OU=SecGrp,DC=DOMAIN,DC=loc},{name:DVD_R,value:CN=DVD_R,OU=ZuGrp,OU=SecGrp,DC=DOMAIN,DC=loc}]
ドントPS内に引用符が排除されている理由を知っています。
$parsed = $zug_grps | Out-String | ConvertFrom-Json
私は次のエラーを取得:
ConvertFrom-Json : Invalid JSON-primitive: USB_R.
任意のアイデアを、何がうまくいかない
は今、私はこのような文字列が変換する場合は? JSONで
私はそれがうまくいくはずだと思いますが、 '$ para = '-zug_grps' '.addslashes($ zug_grps)' '';'を試してみてください。 –
これは魔法を行う!引用符は文字列の中にあり、すべては動作します。ありがとうございました!ありがとう。 – user2355509