【发布时间】:2016-09-25 21:57:55
【问题描述】:
我有一个标签,其中包含这样的数据对象:
<a class="export-json" data-button="[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]">Export json</a>
这些值通过数据按钮传递,如下所示:
$(".export-json").attr("data-button", data);
data 是一个包含json 的列表。
数据是这样的:
[{
name: "John",
position: "663",
a: 15,
b: 48
},
{
name: "311",
position: "663",
a: 12,
b: 48
}]
所以我想转换该数据对象并将其下载为 JSON 文件。
$(".export-json").click(function(){
var data = $.parseJSON($(this).attr('data-button'));
exportJson(this, data);
});
function exportJson(element, data) {
var results = "text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(data));
element.setAttribute("href", "data:"+results);
element.setAttribute("download", "data.json");
}
如果我这样做是因为parseJSON 这里$.parseJSON($(this).attr('data-button')) 我得到:
Uncaught SyntaxError: Unexpected token o in JSON at position 1
如果我删除parseJSON,当我下载文件时,我有这个:
"[object Object],[object Object],[object Object],[object Object],[object Object]"
我不知道为什么会这样?
如果我浏览数据,所有内容都会正确打印:
for (var i = 0; i < data.length; i++) {
var item = data[i];
console.log(item);
}
谁能帮帮我
【问题讨论】:
-
data-button最初是如何填充的? -
[object Object]不是 JSON。这是在随机对象上调用toString()的结果,但它显然不能转换回实际对象。您实际上是如何在该属性中获得该值的,您实际上想用它做什么? -
原始生成锚标签时需要解析
JS object,否则对象数据显示为[object Object] -
该字符串不是 JSON,因此您不能在其上使用 json 解析器。首先需要支持您如何获得该价值。这是XY Problem
-
@Hydrothermal 我编辑了问题,添加了一些其他细节
标签: javascript jquery json parsing