繁体   English   中英

JSON.parse 解析"字符串

[英]JSON.parse parsing " string

我正在尝试将 JSON 字符串从 PHP controller 传递给 Z5669B8E4807543EF439DZF 模板

$data['dist_result'] = json_encode($distribution_service->setDistribution($ids,$distribution));
$this->display('backend/shipments/distributor_selection.twig', $data);

这是 twig 模板上的 javascript:

{% block javascripts %}
    <script>
        var dist_result = "{{ dist_result }}";
        //var dist_result = dist_result.replace("&quot;","\"");
        console.log(dist_result);
        var data = JSON.parse(dist_result);
        console.log(data);
    </script>
{% endblock %}

它不适用于替换或没有它。

这是你 JSON 字符串:

[
  [
    1,
    &quot;Mujer&quot;,
    &quot;18-50&quot;,
    1,
    &quot;Zona1-Noreste&quot;,
    &quot;2&quot;,
    1,
    1,
    1
  ],
  [
    2,
    &quot;Hombre&quot;,
    &quot;18-50&quot;,
    1,
    &quot;Zona1-Noreste&quot;,
    &quot;2&quot;,
    0,
    0,
    2
  ],...

理想情况下,您希望服务器端不对结果进行 html 编码。

但如果无法做到这一点,那么一个简单的方法就是让浏览器对其进行解码。

例如..

 var txt = `[ [ 1, &quot;Mujer&quot;, &quot;18-50&quot;, 1, &quot;Zona1-Noreste&quot;, &quot;2&quot;, 1, 1, 1 ], [ 2, &quot;Hombre&quot;, &quot;18-50&quot;, 1, &quot;Zona1-Noreste&quot;, &quot;2&quot;, 0, 0, 2 ] ]`; var b = document.createElement("div"); b.innerHTML = txt; var j = JSON.parse(b.innerText); console.log(j);

您可以代替dist_result.replace("&quot;","\"")只替换第一次出现的dist_result.replace(/&quot;/g, '"')

查看更多关于String.prototype.replace()

代码:

 var dist_result = `[ [ 1, &quot;Mujer&quot;, &quot;18-50&quot;, 1, &quot;Zona1-Noreste&quot;, &quot;2&quot;, 1, 1, 1 ], [ 2, &quot;Hombre&quot;, &quot;18-50&quot;, 1, &quot;Zona1-Noreste&quot;, &quot;2&quot;, 0, 0, 2 ] ]`; var dist_result_replaced = dist_result.replace(/&quot;/g, '"'); var dist_result_parsed = JSON.parse(dist_result_replaced); console.log(dist_result_parsed);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM