如何将带有单引号的字符串转换为双引号以进行json解析

How do I convert a string with single quotes into double for json parse

本文关键字:解析 json 转换 单引号 字符串      更新时间:2023-12-02

我有一个使用json_encode 在php中编码的数组

 $params = array(1=>'something','2'=>'two');

当我使用json编码时,它会用双引号对它进行编码,这本身很好,但我试图将其嵌入锚标记中,双引号会扰乱属性。<a class="btn ajax" data-method="test" data-params="{"one":"something","2":"two"}" href="#">test ajax link</a>

显然,data-params属性中的第二个双引号正在破坏链接。

所以我所做的是将字符串转换为单引号,但我需要将其重新转换为双引号,以便能够用javascript进行解析;

 var string = {'one':'something','2':'two'} ;

JSON.parse将在该字符串上失败,我尝试了

 var jsonString = dataParams.replace('''', '"');

但这似乎只是转换第一个引号,然后停止。有什么想法吗?

更好的方法是使用htmlentities()函数将"编码为&quot;,这意味着您可以将其插入为data-*。当您使用JavaScript检索它时,它们将显示为",这意味着您可以立即JSON.parse

<a data-foo="<?php echo htmlentities(json_encode(array('demo' => 'test'))); ?>">Hey</a>
<script>alert(JSON.parse(document.getElementsByTagName("a")[0].dataset.foo).demo);</script>

改为使用这个:

var jsonString = dataParams.replace(/'/g, '"');