我正在尝试解析一个JSON字符串,由于非法的字符,我无法让它工作 – 我找不到…
这是我有的:
make = function (el) {
var config = el.getAttribute("data-config");
console.log(config);
var dyn = $.parseJSON(config)
console.log(dyn);
}
var a= document.createElement("<a href='#' class='template' data-config=\"{'role':'button','iconpos':'left','icon':'star','corners':'false','shadow':'false', 'iconshadow':'false', 'theme':'a','class':'test', 'href':'index.html','text':'Star Icon', 'mini':'true', 'inline':'true'}\">Star Icon</a>");
console.log(a);
make(a);
我不确定如何正确地将原始字符串“a”中的JSON取消,以便它可以工作.
题_:
我需要使用哪个引号才能使其工作?
谢谢!
编辑:
好.我用Jquery想出来(虽然我更喜欢Javascript).这有效:
make = function (el) {
var config = el.attr("data-config");
console.log(config);
var dyn = $.parseJSON(config)
console.log(dyn);
}
var c = $('<a href="#" class="template" data-config=\'{"role":"button","iconpos":"left","icon":"star","corners":"false","shadow":"false", "iconshadow":"false", "theme":"a","class":"test", "href":"index.html","text":"Star Icon", "mini":"true", "inline":"true"}\'>Star Icon</a>')
console.log(c);
make(c);
因此,转义JSON字符串的开始/结束引用似乎可以解决问题.实际问题是我不能将document.createElement与完整字符串一起使用.我只能创建元素document.createElement(a)然后设置innerHTML.需要进一步研究一下.
如果有人能告诉我如何做到这一点的Javascript方式,请告诉我.
谢谢!
解决方法:
Strings and object keys in JSON must be double quoted.属性中的双引号无效,因此您需要escape them with "
.
此外,您可能希望使用布尔值true / false而不是字符串“true”/“false”.
var a = document.createElement('<a href="#" class="template" data-config="{"role":"button","iconpos":"left","icon":"star","corners":false,"shadow":false,"iconshadow":false,"theme":"a","class":"test", "href":"index.html","text":"Star Icon", "mini":true,"inline":true}\">Star Icon</a>');
请注意,这是完全不可读的,从长远来看,@millimoose’s suggestion about just setting the attribute afterwards将使这更容易处理.