[英]json_decode returning blank
我在facebook app
上工作。 我以json格式在数据库中存储了一些值。
当我在目标页面上获取值并尝试显示如下值时:
$sql = mysql_query("select * from `beforepublish` where `tabid` = '$page_id'") or die(mysql_error());
$sql = mysql_fetch_assoc($sql);
$contest_id = $sql['contestid'];
$temp_id = $sql["tempid"];
$value = $sql["values"];
$returnValue = json_decode($value);
echo "<pre>";
print_r($returnValue);
echo "</pre>";
这里的价值
$value = {"image":"upload_1182341221.jpg","conttxt":"Get a chance to win Samsung Galaxy Tab "}
我将$returnValue
视为空白。
但当我尝试:
$returnValue = json_decode('{"image":"upload_1182341221.jpg","conttxt":"Get a chance to win Samsung Galaxy Tab "}');
echo "<pre>";
print_r($returnValue);
echo "</pre>";
然后$ returnValue返回:
stdClass Object
(
[image] => upload_1182341221.jpg
[conttxt] => Get a chance to win Samsung Galaxy Tab
)
那么伙计们,请帮助我,为什么我在之前的案例中得到一个空白值?
编辑
vardump($ value)正在返回:
string '{"image":"upload_1182341221.jpg","conttxt":"Get a chance to win Samsung Galaxy Tab
"}' (length=86)
有点奇怪,但它可能与数据库没有给你UTF8字符串(json_decode需要)。
尝试
mysql_query("SET NAMES 'utf8';");
在您的实际查询之前。
//编辑:换行实际上是导致问题的原因。 尝试使用json验证器: http : //jsonlint.com/
尝试在utf8中获取它。
来自json_decode doc(此函数仅适用于UTF-8编码数据。)
string '{"image":"upload_1182341221.jpg","conttxt":"Get a chance to win Samsung Galaxy Tab
"}' (length=86)
有你的问题。 那个换行符和标签。 它应该看起来像:
string '{"image":"upload_1182341221.jpg","conttxt":"Get a chance to win Samsung Galaxy Tab"}' (length=84)
这就是var_dump()
输出长度的原因,因此您可以对任何不需要/不可见的字符进行验证。
您可以将javascript字符串中的换行符存储为\\n
。
json_encode()
将自动执行此操作。
这适用于所有转义序列(常用的转义序列是\\n
, \\r
, \\t
和\\b
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.