JSON 解码 PHP 中的多个嵌套 JSON

JSON decode multiple nested JSON in PHP

我正在使用一个名为 King composer for wordpress 的页面构建器,我正在尝试构建一些自定义功能,就像预期的那样。

我的问题是,内置背景颜色选择器是对背景属性进行 base64 编码,所以我需要解码它 - 但首先我需要解码 'my-css' json,所以我可以访问不同的属性。

这是我从建筑商那里得到的return。

array (
    '_id' => '69391',
    'image' => '294,9,16',
    'gallery-text' => 'Dette er nærmest et galleri',
    'my-css' => '{
           `kc-css`:{
                  `any`:{
                       `typography`{`color|`:`#ffffff`},
                       `background`{`background|`:`longBase64StringHere`},
                       `box`:{`margin|`:`100px inherit inherit inherit`}
                       }
                    }
                 }',
      )

到目前为止我已经尝试过:

 $decodedBackground = base64_decode($atts['my-css']);

其中 return 为空

然后我尝试了:

 $decodedJson = json_decode($atts['my-css']);

其中 returns : 空

还尝试了其他一些严重错误的东西

我不太明白,我可以很好地访问其他属性,因为它只是数组的一部分,但是 CSS 部分,我无法理解。我想我需要更深入地了解 - 但我无法让它发挥作用。

现在卡住了大约 1.5 个小时,所以任何帮助或指点将不胜感激

/------ 编辑 -----/

这就是我之后尝试检查解码的 json 的方式 - 可能很重要。

 $decodedJson = json_decode($atts['my-css'], true);
 echo '<pre>' . var_export($decodedJson, true) . '</pre>';

这可能不是最好的方法,因为 kc-css 中的 JSON 格式不正确,但此代码适用于您的情况:

// Refomating JSON
$atts['my-css'] = str_replace('`{', '`:{', $atts['my-css']);
$atts['my-css'] = str_replace('`', '"', $atts['my-css']);

$json = json_decode($atts['my-css'], true);