[英]JSON Syntax Error when using escaped slashes
完全重新編輯的問題
<?php
$s1 = '{"req":"auth","token":"1234567\/\\"}'; // this seems to be valid, isn't it?
$s2 = '{"req":"auth","token":"123456\/\\7"}'; // this seems to be valid, isn't it?
$s3 = '{"req":"auth","token":"123456789"}';
print_r(json_decode($s1,true));
echo " - ERRORCODE FOR CASE#1 IS:" . json_last_error() . '<br />';
print_r(json_decode($s2,true));
echo " - ERRORCODE FOR CASE#2 IS:" . json_last_error() . '<br />';
print_r(json_decode($s3,true));
echo " - ERRORCODE FOR CASE#3 IS:" . json_last_error() . '<br />';
?>
結果:
- ERRORCODE FOR CASE#1 IS:4
- ERRORCODE FOR CASE#2 IS:4
Array ( [req] => auth [token] => 123456789 ) - ERRORCODE FOR CASE#3 IS:0
題:
為什么s1
和s2
無法正常工作,如何解決?
我猜你在這里測試東西,因此有:
$test_json = '{"req":"auth","token":"1234567\/\\"}';
盡管單引號確實會忽略\\n
,但\\\\
仍被視為單反斜杠。 這意味着您得到的JSON是:
{"red":"auth","token":"1234567\/\"}
不用說,這是語法錯誤。
如果要從外部來源獲取JSON,則無需擔心,但是如果要使用硬編碼JSON字符串進行測試,則需要:
$test_json = '{"req":"auth","token":"1234567\/\\\\"}';
您必須在json_decode之前調用stripslashes函數,即在您的第一個print_r之前添加以下兩行,以便它解碼並打印正確的數組。
$s1 = stripslashes($s1);
$s2 = stripslashes($s2);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.