【问题标题】:parse andstringify a json object jquery解析和字符串化一个json对象jquery
【发布时间】: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


【解决方案1】:

使用 jQuery data() 方法代替 attr()

变化:

$(".export-json").attr("data-button", data)

收件人:

$(".export-json").data("button", data)

然后它将被存储为数组,不需要任何解析

如果您真的需要在属性中使用它,则需要先将数组字符串化,然后再分配为属性值

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-13
    • 2019-11-27
    • 1970-01-01
    • 1970-01-01
    • 2011-11-27
    • 1970-01-01
    相关资源
    最近更新 更多