【问题标题】:Remove quotes from JSON [closed]从 JSON 中删除引号 [关闭]
【发布时间】:2012-09-03 21:09:54
【问题描述】:

当我调用JSON.stringify 时,我得到一个类似[{"id":"001","name":"Mary"},{"id":"002","name": "Tom"}] 的JSON 字符串。我怎样才能使它看起来像这样?

[
    {id: 7, name: "Ruby"},
    {id: 29, name: "C#"},
    {id: 31, name: "Fortran"},
    {id: 37, name: "Visual Basic"},
    {id: 41, name: "C"},
    {id: 43, name: "C++"},
    {id: 47, name: "Java"}
]

【问题讨论】:

  • 有什么问题?以及您尝试了什么,到目前为止没有什么效果?
  • 我不知道 Mary 和 Tom 是如何成为 Ruby、C#、Fortran、Visual Basic、C、C++ 和 Java 的。
  • 为什么两个样本不一样?
  • 没有这样的东西 String[] in javascript...
  • @user1658116:你知道有没有引号都可以,对吧?

标签: javascript json


【解决方案1】:

好的,显然你想去掉引号并很好地缩进它?然后我会事先这样做:

function indent(str) {
    return str.replace(/\n/g, '\n\t');
}

function toPrettyObject(obj) {
    var ajsoln = []; // Actual JavaScript Object Literal Notation

    if(Object.prototype.toString.call(obj) === '[object Array]') {
        for(var i = 0; i < obj.length; i++) {
            ajsoln.push(indent(toPrettyObject(obj[i])));
        }

        return '[\n' + ajsoln.join(',\n') + '\n]';
    } else if(typeof obj !== 'object') {
        return JSON.stringify(obj);
    } else {
        for(var x in obj) {
            ajsoln.push('\t' + (/^[a-zA-Z_\$][\w\$]+$/.test(x) ? x : JSON.stringify(x)) + ': ' + indent(toPrettyObject(obj[x])));
        }

        return '{\n' + ajsoln.join(',\n') + '\n}';
    }
}

【讨论】:

  • 它不是 JSON,标准 JS 对象,其中 ID 是字符串,他希望它们是数字。
  • 我通过 var json=JSON.stringify(value); 获取我的数据;
  • @MattGreer:是什么让你说它不是 JSON? (无论如何,如果不是......直接跳到第二部分。)
  • @minitech -- 是的,它实际上是 JSON。我的错。没关系:)
  • Reviver 功能在这里很有用。 function(key, val) { return key === "id" ? +val : val; }
猜你喜欢
  • 2021-08-27
  • 1970-01-01
  • 1970-01-01
  • 2014-06-16
  • 2020-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多