Json解码返回null。怎么了?

时间:2018-12-08 13:47:55

标签: php json

我正在尝试从此json返回数组

 $jsondata = "{ 'map' : {'center': {'lat': 24.68599, 'lng': 46.7026558}, 
 'zoom': 16}, 'marker': { 'position': {'lat': 24.68599, 'lng': 46.7026558 }, 
 'icon': '<?php bloginfo('stylesheet_directory'); ? 
 >/resources/images/temp/marker.png' } }";

$result = json_decode($jsondata, true);

结果始终为null。 谁能告诉我原因以及如何解决? 我想单引号必须替换为双引号,但这还是行不通的。

2 个答案:

答案 0 :(得分:2)

您正在使用单引号',而不是双引号"作为密钥。

$jsondata = '{ "map" : {"center": [...]

此外,“ bloginfo”部分存在问题。

您编写的代码没有意义。

假设bloginfo是一个函数,该函数返回表示路径的字符串,并且您可以直接从当前作用域调用它,然后可以调用它,将路径的最后一部分附加,最后将JSON编码为正确地逃避每个字符。

这种方式:json_encode( bloginfo("stylesheet_directory") . '/resources/images/temp/marker.png' )

整个事情变成了:

 $jsondata = '{ "map" : {"center": {"lat": 24.68599, "lng": 46.7026558}, 
 "zoom": 16}, "marker": { "position": {"lat": 24.68599, "lng": 46.7026558 }, 
 "icon": '. json_econde( bloginfo("stylesheet_directory")  . 
 '/resources/images/temp/marker.png' ). ' } }';

答案 1 :(得分:1)

构建JSON时,以下代码不会运行您期望的PHP代码...

 'icon': '<?php bloginfo('stylesheet_directory'); ? 
 >/resources/images/temp/marker.png' } }";

如果您尝试输出最终的JSON字符串,您可能会发现它不是您的期望。相反,您应该按部分构建字符串...

 'icon': '". bloginfo('stylesheet_directory'). 
 "/resources/images/temp/marker.png' } }";

您还需要更改它以使用双引号以及其他答案中指出的内容。所以您需要同时做这两项...

$jsondata = '{ "map" : {"center": {"lat": 24.68599, "lng": 46.7026558},
 "zoom": 16}, "marker": { "position": {"lat": 24.68599, "lng": 46.7026558 },
 "icon": "'.bloginfo('stylesheet_directory').'/resources/images/temp/marker.png" } }';