繁体   English   中英

json_decode返回空白

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM