0

我有一个 json 编码问题。

如果我打印$r['image']它就可以打印。但是,如果我打印编码的 json 对象,则会出现问题。

<?php
    echo 'it prints: '.$r['image'];
    //it prints: http://userserve-ak.last.fm/serve/126/90145859.jpg

    $jsonObj = json_encode($r);
    echo 'it prints: '.$jsonObj;
?> 

{"artist_name":"亚特兰大节奏部分","track_name":"so into you","image":{"@attributes":{"size":"medium"}}}

什么是零件{"@attributes":{"size":"medium"}}?为什么我在那个地方看不到图片链接?我必须做什么才能看到"image":http://userserve-ak.last.fm/serve/126/90145859.jpgjson 对象?

var_dump($r);是:

array(3) {
  ["artist_name"]=>
  string(22) "atlanta rhythm section"
  ["track_name"]=>
  string(11) "so into you"
  ["image"]=>
  object(SimpleXMLElement)#12 (1) {
    ["@attributes"]=>
    array(1) {
      ["size"]=>
      string(6) "medium"
    }
  }
}

我已尝试对参数进行 url 编码,$r['image']但没有帮助。

4

4 回答 4

1

您可以通过强制类型强制转换为字符串:

print json_encode(array('image' => (string)$r['image']));

结果:

"image":http://userserve-ak.last.fm/serve/126/90145859.jpg

于 2013-07-05T12:29:04.740 回答
1

我认为 $image 是一个 simplexmlobject。其中包含更多信息,但不包含它的主体,这里写了一些关于它的内容:

SimpleXML 对象的 PHP、json_encode、json_decode

一个简单的解决方法可以是

<?php
$r['image_url'] = (string) $r['image'];
?>

这将强制输出,就像在字符串中回显对象一样。

于 2013-07-05T12:29:22.903 回答
1
//This gives the image

<?php 

//form the array
$data['val']="http://userserve-ak.last.fm/serve/126/90145859.jpg";

//encode json
$encode = json_encode($data);

echo $encode;

//decode the json 
$decode = json_decode($encode);

//print the image
echo "<img src='".stripslashes($decode->val)."'>";
于 2013-07-05T12:27:34.923 回答
0

在编码 json 之前使用斜杠

$r['image'] = addslashes ($r['image'] );
 json_encode($r);

这可能会有所帮助

于 2013-07-05T12:17:08.023 回答