在Javascript中清除Json对象中的#符号

时间:2016-10-11 17:16:42

标签: javascript json

我有这个json字符串,变成了一个Javascript对象,在其中一个级别返回类似这样的东西

"link": {
            "#tail": "\n\n\t\t",
            "#text": "http://static2.server.com/file.mp3"
          },

我需要在Javascript上获取“text”的值,但“#”符号使其无法访问它。

我试过像这样清理字符串:

var myJSONString = JSON.stringify(response);
      var myEscapedJSONString = myJSONString.replace(/[^\u0000-\u007F]+/g, "").replace("#","t");

但即使在使用stringify将其转换为字符串后,它也不会清除“关键”部分。

2 个答案:

答案 0 :(得分:0)

在使用对象之前剥离#怎么样?

function stripHashes(obj) {
    var strippedObj = {};
    Object.keys(obj).forEach(function(key) {
        strippedObj[key.substr(1)] = link[key];
    });
    return strippedObj;
}

这将返回一个新对象,其中的哈希值从输入对象的键中剥离。

答案 1 :(得分:0)

我认为#被用作密钥没有任何问题。任何有效的字符串都可以用作对象键。但是如果你真的想要删除使用字符串,你可以使用正则表达式替换它(假设只在每个键的开头使用哈希字符);

const cleanObj = JSON.parse(JSON.stringify(response).replace(/\"#/gm,'"'))
console.log(cleanObj.link.text);

我也无法通过javascript访问和清理任何问题

var cleanObject = { link: {} };

Object.keys(response.link).map(function(key) { 
    cleanObject.link[key.substring(1)] = response.link[key];
})

在这里小提琴:https://jsfiddle.net/p5cvvqzu/