更新: 我已将我的网址更新为以下内容:
scriptIWrote / 1111 /%5B%7B%93num%94%3A%93NX543%20.c38%202000%94%7D%2C%7B%93num%94%3A%93NX543%20.c38%202000%94% 7D%5D.json
这给出了这样一个数组:(当我使用print_r($ _ GET ['nums']))
[{“num”:“NX543 .c38 2000”},{“num”:“NX543 .c38 2000”}]
哪个是有效的JSON,但不能通过该行解码:
$callNums = json_decode($_GET['nums'], true);
但是,将“json_decode”替换为“array”实际上会将$ _GET ['nums']视为字符串,但仍无法正常工作
所以我试图通过URL为我正在编写的API传递一个JSON数组,如下所示:
scriptIWrote/1111/[0000,0000].json
我的htaccess规则设置如下:
RewriteCond %{THE_REQUEST} GET
RewriteRule ^scriptIWrote/([^/]+)/([^/]+)(?=.json) root/scriptIWrote/doThing.php?type=$1&names=$2 [L,QSA]
但是,当我打印出参数中包含的内容时,如下所示:
$names = json_decode($_GET['nums'], true);
//array of sheet values
$type = $_GET['type'];
error_log($names[0] . $nums[1]);
error_log($type);
$ nums [0]和$ nums [1]为空,但$ type显示正确的值;我知道我在我的htaccess中犯了一个错误,但我不确定我做错了什么......
答案 0 :(得分:0)
我看到了几个可能的问题。第一个[
和]
是网址中保留的一般分隔符字符。如果你想使用它们,则需要进行百分比编码。
第二个[frank,bob]
无效JSON。你需要围绕这些值的双引号。
我从未听说过有人在网址中传递JSON。这似乎是一个拙劣的想法。
答案 1 :(得分:0)
终于明白了:
网址:
scriptIWrote/1111/%5B%22NX543%20.c38%202000%22%2C%22NX543%20.c38%202000%22%5D.json
PHP:
$nums = json_decode(stripslashes($_GET['nums']), true);