使用Jquery从Json返回数据中删除双引号

时间:2013-05-16 22:22:21

标签: javascript jquery

我使用JQuery来获取Json数据,但它显示的数据有双引号。它有删除它的功能吗?

$('div#ListingData').text(JSON.stringify(data.data.items[0].links[1].caption))

它返回:

"House"

如何删除双引号?欢呼声。

9 个答案:

答案 0 :(得分:60)

使用replace

var test = "\"House\"";
console.log(test);
console.log(test.replace(/\"/g, ""));  

// "House"
// House

注意结尾的g表示“全局”(全部替换)。

答案 1 :(得分:16)

如果你知道自己的数据就像你的例子那样适合利基需求......这有效:

JSON.parse(this_is_double_quoted);

JSON.parse("House");  // for example

答案 2 :(得分:5)

stringfy方法不是用于解析JSON,而是用于将对象转换为JSON字符串。

JQuery在加载时由jQuery解析,您无需解析数据即可使用它。只需使用数据中的字符串:

$('div#ListingData').text(data.data.items[0].links[1].caption);

答案 3 :(得分:3)

我也有这个问题,但在我的情况下我并不想使用正则表达式,因为我的JSON值可能包含引号。希望我的回答将来会帮助其他人。

我通过使用标准字符串切片删除第一个和最后一个字符来解决此问题。这对我有用,因为我在产生它的JSON.stringify()上使用textarea,因此,我知道我总是会在每一端都有" s字符串。

在这个通用示例中,response是我的AJAX返回的JSON对象,key是我的JSON密钥的名称。

response.key.slice(1, response.key.length-1)

我像这样使用正则表达式replace来保留换行符并将该键的内容写入HTML中的段落块:

$('#description').html(studyData.description.slice(1, studyData.description.length-1).replace(/\\n/g, '<br/>'));

在这种情况下,$('#description')是我写的段落标记。 studyData是我的JSON对象,description是我的具有多行值的键。

答案 4 :(得分:1)

您正在做的是在示例中创建一个JSON字符串。要么不使用JSON.stringify(),要么你有JSON数据回来而且你不想引用,只需使用JSON.parse()删除JSON响应周围的引用!不要使用正则表达式,没有必要。

答案 5 :(得分:1)

有人here建议使用eval()从字符串中删除引号。不要那样做,那只是乞求代码注入。

我未在此处列出的另一种方法是使用:

let message = JSON.stringify(your_json_here); // "Hello World"
console.log(JSON.parse(message))              // Hello World

答案 6 :(得分:0)

我认为不需要替换任何引号,这是一个完美形成的JSON字符串,您只需将JSON字符串转换为对象。本文完美地解释了这种情况:Link

示例:

success: function (data) {

        // assuming that everything is correct and there is no exception being thrown
        // output string {"d":"{"username":"hi","email":"hi@gmail.com","password":"123"}"}
        // now we need to remove the double quotes (as it will create problem and 
        // if double quotes aren't removed then this JSON string is useless)
        // The output string : {"d":"{"username":"hi","email":"hi@gmail.com","password":"123"}"}
        // The required string : {"d":{username:"hi",email:"hi@gmail.com",password:"123"}"}
        // For security reasons the d is added (indicating the return "data")
        // so actually we need to convert data.d into series of objects
        // Inbuilt function "JSON.Parse" will return streams of objects
        // JSON String : "{"username":"hi","email":"hi@gmail.com","password":"123"}"
        console.log(data);                     // output  : Object {d="{"username":"hi","email":"hi@gmail.com","password":"123"}"}
        console.log(data.d);                   // output : {"username":"hi","email":"hi@gmail.com","password":"123"} (accessing what's stored in "d")
        console.log(data.d[0]);                // output : {  (just accessing the first element of array of "strings")
        var content = JSON.parse(data.d);      // output : Object {username:"hi",email:"hi@gmail.com",password:"123"}" (correct)
        console.log(content.username);         // output : hi 
        var _name = content.username;
        alert(_name);                         // hi

}

答案 7 :(得分:0)

您可以简单地尝试String();删除引号。

在这里参考第一个示例:https://www.w3schools.com/jsref/jsref_string.asp

稍后谢谢。

PS:致MOD:别误会我是在挖掘这个古老的问题。我今天遇到了这个问题,在寻找答案时碰到了这篇文章,我只是在发布答案。

答案 8 :(得分:0)

我在 Promise 中遇到了类似的情况,刚刚解决了将强制转换为 (String) 的问题

x = np.linspace(-10, 10, 1000)
plt.plot(x, r_pow(x, 1, 6));