【问题标题】:JSON decode multiple nested JSON in PHPJSON解码PHP中的多个嵌套JSON
【发布时间】:2017-04-21 08:51:34
【问题描述】:

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

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

这是我从建造者那里得到的回报。

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']);

返回为空

然后我尝试了:

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

返回:null

还尝试了一些其他严重错误的方法

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

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

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

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

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

【问题讨论】:

  • 这也将返回 null - 在写我的问题时尝试过。
  • 对不起my-css下的内容不是有效的json..请确认
  • $atts['my-css'] 的值不使用标准编码。它不是 JSON,我在您发布的数据中看不到任何使用 base64 编码的内容。
  • 有没有改变编码的方法,或者访问 my-css 中单个值的另一种方法?

标签: php arrays json wordpress decode


【解决方案1】:

这可能不是最好的方法,因为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);

【讨论】:

  • 这适用于这次 - 但每次我需要 css 值时都必须这样做会很麻烦。谢谢 - 我设法得到字符串 echo '
    ' 。 var_export($json['kc-css']['any']['background']['background|'], true) 。 '
    ';
猜你喜欢
  • 1970-01-01
  • 2015-11-30
  • 1970-01-01
  • 2013-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-30
相关资源
最近更新 更多