[英]decode json format data sent via 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
。 我究竟做错了什么?? 我需要以其他格式传递数据吗?
似乎无法解码不带双引号的JSON字符串,因为很难确定JSON字符串"{A:B:C}"
是从{"A":"B:C"}
还是从{"A:B":"C"}
您可以使用urlencode()对JSON字符串进行编码,也可以忽略极端情况并手动添加双引号以使JSON字符串有效,希望此帮助:D
如果您这样传递它,它将起作用: ?json={"uid":"guest|10001441"}
但我不确定这是否合适。
您传递的数据不是有效的JSON。 目前,它周围没有双引号。 尝试这个:
if (isset($_GET['json']))
{
$url_data = '"'.$_GET['json'].'"';
$decoded_data = json_decode($url_data,true);
var_dump($decoded_data);
}
输出:
string(20) "{uid:guest|10001441}"
另外,我建议在这里使用POST
而不是GET
。
您可以使用base64_encode()对url参数进行编码
$json=base64_encode('{"uid":"guest|10001441"}');
网址看起来像这样
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);
}
您网址中的JSON无效。 PHP的json_decode在uid
周围寻找双引号,并且它的值很大。
编辑:不是将数据存储为json中的URL,而不能将数据存储为键值对,例如
?uid=value
然后你可以做类似的事情
$data = json_encode( $_GET );
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.