json_decode没有在php代码中显示数据

时间:2017-01-20 13:00:43

标签: php arrays json

更新:

感谢所有建议(我做了什么来获得-3?我不明白)

我发现数据字段设置为VARCHAR并将JSON截断为255个字符,使其无效。我改变了,根据JSONlist.com

,JSON现在有效

但它仍然拒绝吃东西,所以有可能会有更多的缺点,这是当前的代码,有什么我做错了吗?

JSON:     [{"名称":"影像/ front_8mhztpaj.jpg"" usrName":" GEDC0041.JPG""大小&# 34;:805229,"类型":"图像/ JPEG""缩略图":"影像/ front_8mhztpaj.jpg"&#34 ; thumbnail_type":"图像/ JPEG"" thumbnail_size":10490"字符串searchstr":" front_8mhztpaj.jpg,:sStrEnd&#34 ;}]

新守则:

<?php

$json = $DETAILS->getColumnVal("IMAGE"); 
//

json_decode($json, true);

?>
  <?php if ($DETAILS->getColumnVal("IMAGE") != "") { ?> 
  <?php $imgsrc = "input/".$myImage = $myArray[0]['name']; ?>
     <img src="<?php echo $imgsrc ?>" class="img-responsive center-block" alt="<?php echo $DETAILS->getColumnVal("TITLE"); ?>">    <?php echo $imgsrc; ?>
  <?php } ?>
        </div>
        </div>
        <?php
$DETAILS->moveNext();
}
$DETAILS->moveFirst(); //return RS to first record
?>

当我要求它回应&#34; IMAGE&#34;时,查询仍然正常工作。它显示了我在这里发布的json字符串,但是在图像数据应该是的页面中它只显示&#34;输入/&#34;之后没有文字。

我做错了什么?

3 个答案:

答案 0 :(得分:0)

您提供的JSON格式错误,缺少结束标记。似乎反斜杠是强制性的,如果您不需要逃避路径,则可以将其删除。 ( @亚历克斯叔

另外,一个好的做法是避免PHP在代码中间打开/关闭标记。这样可以减少它的混乱。

<?php

$json = $DETAILS->getColumnVal("IMAGE");

// Stripslashes() is mandatory
$myArray = json_decode(stripslashes($json), true);

// Security check in case json_decode returns false.
if ($myArray) {
    $myImage = $myArray[0]["name"];
    $myTitle = $DETAILS->getColumnVal("TITLE");

    // Into a double quoted string, you can 'inject' php vars.
    // just put it like $myVar or wrap it with {$myVar}
    echo "<img src=\"input/{$myImage}\" class=\"img-responsive center-block\" alt=\"{$myTitle}\">";
}

答案 1 :(得分:0)

解决

我遇到的主要问题(感谢你们)是包含JSON的数据字段被设置为VARCHAR,并被截断为255个字符。

我遇到的第二个问题是php错误

json_decode($json, true);

应阅读:

$myArray = json_decode($json, true);

感谢所有帮助过的人

答案 2 :(得分:-2)

您需要先从JSON字符串中删除斜杠:

$myArray = json_decode(stripslashes($json), true);