jquery数据属性不解析json字符串

Posted

技术标签:

【中文标题】jquery数据属性不解析json字符串【英文标题】:jquery data attribute not parsing json string 【发布时间】:2017-08-09 09:33:31 【问题描述】:

我正在使用JSON.stringify()html 数据属性中保存 javascript 对象数组。当我尝试使用 jquery .data() 函数检索数据时,我没有得到反序列化的 javascript 对象数组,而是给了我普通的 json 字符串。我读到,jquery .data() 函数反序列化文档中引用的 Json 字符串

当数据属性为对象(以''开头)或数组(以'['开头)时,则使用jQuery.parseJSON解析字符串; 它必须遵循有效的 JSON 语法,包括引用的属性名称。如果 该值不可解析为 JavaScript 值,它保留为 字符串

我认为,我的是一个有效的 json 字符串,因为如果我尝试 $.parseJSON ,它会返回 javascript 对象数组。

请帮忙!

【问题讨论】:

【参考方案1】:

您不需要使用 jQuery.data() 对对象进行字符串化来存储它们。像这样存储对象:

var myobject =  "name":"john", "age":30;

jQuery('#dataholder').data('theobject',myobject);

console.log(jQuery('#dataholder').data('theobject'));

console.log(jQuery('#data_attribute_method').data('theobject'));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>


<div id="dataholder"></div>

<div id="data_attribute_method" data-theobject=' "name":"jim", "age":31'></div>

jQuery 将在渲染时解析(作为对象)硬编码的数据属性,但之后您设置为字符串的任何数据属性都将存储为文本,无论是否用花括号括起来。

【讨论】:

以上是关于jquery数据属性不解析json字符串的主要内容,如果未能解决你的问题,请参考以下文章

$.ajax传递json格式参数,某属性为null,取值为空字符串的问题。

JS中将JSON的字符串解析成JSON数据格式《转》

使用Jquery解析Json基础知识

jquery : eval() 解析json的注意

无法从数据属性解析 JSON [重复]

Flutter -- JSON解析