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

4

我有一个数组,正在使用json_encode在php中进行编码

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

当我使用json编码时,它会用双引号进行编码,这本身没问题,但我试图将其嵌入到锚标签中,双引号会破坏属性。 显然,data-params属性中的第二个双引号正在破坏链接。
所以我把字符串转换成单引号,但我需要重新转换为双引号才能在JavaScript中解析。
 var string = {'one':'something','2':'two'} ;

对于那个字符串,JSON.parse会失败,我已经尝试过了。

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

但是似乎只转换了第一个单引号就停止了。有什么想法吗?
2个回答

3
更好的方式是使用htmlentities()函数"编码为",这样就可以将其插入为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>

这是一种更好的做法。谢谢。 - Brian

0
请使用以下代码:
var jsonString = dataParams.replace(/'/g, '"');

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接