2013-05-16 52 views
33

Tôi sử dụng JQuery để lấy dữ liệu Json, nhưng dữ liệu mà nó hiển thị có dấu ngoặc kép. Nó có một chức năng để loại bỏ nó?xóa dấu ngoặc kép khỏi dữ liệu trả về Json bằng Jquery

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

nó sẽ trả về:

"House" 

Làm thế nào tôi có thể loại bỏ các dấu nháy kép? Chúc mừng.

+1

chức năng thay thế javascript sẽ hoạt động –

Trả lời

54

Sử dụng replace:

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

// "House" 
// House 

Lưu ý g ở cuối dòng có nghĩa là "toàn cầu" (thay thế tất cả).

+1

Tuyệt vời!Điều này chính xác những gì tôi đang tìm kiếm. Tôi thay thế các dấu ngoặc kép và thử với một số ký tự. Tốt đẹp! cảm ơn!! – AlvaroAV

+1

Regex, mặc dù nó hoạt động, có thể gây ra rất nhiều lãng phí bộ nhớ. Tôi nghĩ rằng người dùng không nên sử dụng JSON.stringify() hoặc nếu đó là một câu trả lời JSON chỉ là một câu, hãy sử dụng JSON.parse(). Những regexes thêm lên khi mọi thứ quy mô. Chỉ cần nói. –

+0

Không cắt các dấu ngoặc kép bắt đầu/kết thúc. Nó chặn tất cả các trích dẫn. –

5

Phương thức stringfy không phải để phân tích cú pháp JSON, để chuyển đối tượng thành chuỗi JSON.

JSON được phân tích cú pháp bằng jQuery khi bạn tải nó, bạn không cần phải phân tích dữ liệu để sử dụng nó. Chỉ cần sử dụng chuỗi trong dữ liệu:

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

Tôi không cần thay thế bất kỳ dấu ngoặc kép nào tình hình: Link

Ví dụ:

success: function (data) { 

     // assuming that everything is correct and there is no exception being thrown 
     // output string {"d":"{"username":"hi","email":"[email protected]","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":"[email protected]","password":"123"}"} 
     // The required string : {"d":{username:"hi",email:"[email protected]",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":"[email protected]","password":"123"}" 
     console.log(data);      // output : Object {d="{"username":"hi","email":"[email protected]","password":"123"}"} 
     console.log(data.d);     // output : {"username":"hi","email":"[email protected]","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:"[email protected]",password:"123"}" (correct) 
     console.log(content.username);   // output : hi 
     var _name = content.username; 
     alert(_name);       // hi 

} 
1

gì bạn đang làm là thực hiện một chuỗi JSON trong ví dụ của bạn. Hoặc không sử dụng JSON.stringify() hoặc nếu bạn đã bao giờ có dữ liệu JSON quay lại và bạn không muốn trích dẫn, chỉ cần sử dụng JSON.parse() để xóa các trích dẫn xung quanh phản hồi JSON! Không sử dụng regex, không cần.

13

Đối ngách cần khi bạn biết dữ liệu của bạn như ví dụ của bạn ... làm việc này:

JSON.parse(this_is_double_quoted); 

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

Tôi cũng có câu hỏi này, nhưng trong trường hợp của tôi, tôi không muốn sử dụng một regex, bởi vì tôi Giá trị JSON có thể chứa dấu ngoặc kép. Hy vọng câu trả lời của tôi sẽ giúp ích cho người khác trong tương lai.

Tôi đã giải quyết vấn đề này bằng cách sử dụng một lát chuỗi tiêu chuẩn để xóa ký tự đầu tiên và cuối cùng. Điều này làm việc cho tôi, bởi vì tôi đã sử dụng JSON.stringify() trên textarea đã tạo ra nó và kết quả là, tôi biết rằng tôi sẽ luôn có " s ở mỗi đầu của chuỗi.

Trong ví dụ tổng quát này, response là đối tượng JSON mà AJAX trả về và key là tên khóa JSON của tôi.

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

tôi đã sử dụng nó như thế này với một regex replace để bảo vệ ngắt dòng và viết nội dung của khóa đó để một khối đoạn trong HTML của tôi:

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

Trong trường hợp này, $('#description') là thẻ đoạn tôi đang viết. studyData là đối tượng JSON của tôi và description là khóa của tôi với giá trị nhiều dòng.

+0

Đây chính xác là những gì tôi vừa làm ... rất hữu ích, cảm ơn. :) – dav

Các vấn đề liên quan