【问题标题】:Json decode returns null. What's wrong?Json 解码返回 null。怎么了?
【发布时间】:2019-05-10 00:35:29
【问题描述】:

我正在尝试从这个 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);

结果始终为空。 有人可以告诉我为什么以及如何解决它吗? 我想必须用双引号替换单引号,但这无论如何都没有用。

【问题讨论】:

标签: php json


【解决方案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" } }';

【讨论】:

    【解决方案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' ). ' } }';
    

    【讨论】:

    • 我尝试将单引号替换为双引号,并且以单引号开头的双引号。结果还是空
    • 问题出在这一段:'&lt;?php bloginfo('stylesheet_directory')
    • @R.García 是的,我同意。我完成了答案
    • @NigelRen 不,我不需要。 json_encode 将字符串作为参数传递:json_encode( 'hello' ) ====&gt; "hello"
    • @Paolo 但在我看来,您提出的解决方案很难没有必要。也许我们可以使用 Escape Sequences 改进您的解决方案: phppot.com/php/php-escape-sequences
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-20
    • 2016-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多