【问题标题】:Php json_encode an array with a json valuephp json_encode 一个带有 json 值的数组
【发布时间】:2016-02-09 20:11:50
【问题描述】:

假设我有以下数组:

$res['results']='{"key":"value"}';
$res['status']='OK';

然后我 json_encode 那个数组:

var_dump(json_encode($res));

这是结果(双引号被转义):

{"results":"{\"key\":\"value\"}","status":"OK"}

但我想要这个结果(双引号没有转义):

{"results":"{"key":"value"}","status":"OK"}

实现我的目标的正确方法是什么,假设数组有点复杂,我不知道哪些值是 json 本身?

非常感谢

【问题讨论】:

    标签: php arrays json


    【解决方案1】:

    您已将 json 嵌入到 php 字符串中。 PHP 不知道 JSON 是什么,并且会像对待任何其他字符串一样对待该 json-in-string - 当您再次 json_encode() 时,将引用任何 json 元字符。例如它只会双重编码。

    需要对json字符串进行解码,存储解码后的数据结构,然后重新整体编码:

    $res['results']=json_decode('{"key":"value"}');
                    ^^^^^^^^^^^^-----------------^
    $res['status']='OK';
    

    【讨论】:

    • 是的,我知道,我想这是唯一的选择?我正在寻找一个通用解决方案,以防您不知道该值将是一个 json(假设它是一个来自其他地方的变量......)。
    • 好吧,无论如何,您想要的结果是无效的 json。它会炸毁你提供给它的任何 json 解析器。
    猜你喜欢
    • 1970-01-01
    • 2018-09-06
    • 2012-01-21
    • 2018-05-21
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-28
    相关资源
    最近更新 更多