如何将带有单引号的字符串转换为双引号以进行json解析
How do I convert a string with single quotes into double for json parse
我有一个使用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()
函数将"
编码为"
,这意味着您可以将其插入为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, '"');
相关文章:
- 使用JQuery解析JSON嵌套数组
- 解析JSON并从中删除对象会出错
- 通过解析Json附加到数组
- 如何使用jQuery来解析json并将其作为列表输出到HTML中
- 这需要如何解析JSON呢
- 使用Angular.js解析JSON中的嵌套对象数组
- 正在创建使用子字符串解析JSON数据的函数
- 为什么我不能使用jQuery.parseJSON(json)解析json字符串
- 从第三方服务器发出解析json的问题
- 使用angularjs解析JSON,并选择select选项
- 如何通过解析JSON文件来分配JavaScript变量
- 解析Json内部的函数
- 在Javascript中解析json并在html上创建表
- 使用.map解析JSON对象时出现问题
- 在Jade中解析JSON
- JS-通用解析JSON响应
- 通过组合变量在解析JSON时访问随机对象
- 如何使用javascript解析JSON文件
- 直接从node.js中的文件解析JSON
- 使用标签解析JSON