0

次のURLを検討してください

index.php?json={uid:guest|10001441}

データをデコードできません。として出力が必要{"uid":"guest|10001441"}です。

私が使用しているコードは

if (isset($_GET['json']))
{
   $url_data = $_GET['json'];
   $decoded_data = json_decode($url_data,true);
   var_dump($decoded_data);
}

しかし、それは私に出力を与えますNULL. 私は何を間違っていますか?? 別の形式でデータを渡す必要がありますか??

4

5 に答える 5

2

"{A:B:C}"JSON 文字列がエンコードされているかどう{"A":"B:C"}かを判断するのは難しいため、二重引用符なしで JSON 文字列をデコードすることは不可能のようです。{"A:B":"C"}

urlencode() を使用して JSON 文字列をエンコードするか、極端なケースを無視して手動で二重引用符を追加して JSON 文字列を有効にすることができます。これが役立つことを願っています:D

于 2013-07-30T13:12:46.817 に答える
1

base64_encode() で URL パラメータをエンコードできます

$json=base64_encode('{"uid":"guest|10001441"}');

URLは次のようになります

index.php?json=eyJ1aWQiOiJndWVzdHwxMDAwMTQ0MSJ9

次に、このようにします:-

if (isset($_GET['json']))
{
   $url_data = base64_decode($_GET['json']);
   $decoded_data = json_decode($url_data,true);
   var_dump($decoded_data);
}
于 2013-07-30T12:25:05.027 に答える
1

このように渡すと動作します:?json={"uid":"guest|10001441"}

しかし、それが適切な方法であるかどうかはわかりません。

于 2013-07-30T12:13:07.170 に答える
0

URL にある JSON が無効です。PHP の json_decode は、uid値を囲む二重引用符を探します。

編集: json として URL にデータを保存するのではなく、次のようなキーと値のペアとしてデータを保存できませんでした

?uid=value

そして、あなたは次のようなことができます

$data = json_encode( $_GET );
于 2013-07-30T12:11:45.707 に答える