Jquery

2013-05-16 4 views
33

kullanarak Json dönüş verilerinden çift tırnak kaldır Json verilerini almak için JQuery kullanıyorum, ancak görüntülediği verilerin çift tırnak işareti var. Bunu kaldırmak için bir işlev var mı?Jquery

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

döndürür:

"House" 

nasıl çift tırnak kaldırabilirim? Şerefe.

+1

javascript'in yerine işlevini yerine getirmeli –

cevap

54

Kullanım replace: ucunda g "küresel" anlamına

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

// "House" 
// House 

Not (bütün değiştirin).

+1

Awesome!Tam olarak ne aradığımı. Çift tırnakları değiştiriyorum ve bazı karakterlerle deneyeceğim. Güzel! Teşekkürler!! – AlvaroAV

+1

Regex, her ne kadar işe yarıyorsa da, çok fazla bellek israfına neden olabilir. Kullanıcı sadece JSON.stringify() kullanmamalı ya da sadece bir cümle olan bir JSON cevabı ise JSON.parse() kullanılmalıdır. İşler ölçeklendiğinde bu regex'ler toplanır. Sadece söylüyorum. –

+0

Başlatma/sonlandırma tırnaklarını kırpmaz. Tüm teklifleri çıkarır. –

5

stringfy yöntemi JSON'u ayrıştırmak için değil, bir nesneyi JSON dizesine dönüştürmek içindir.

JSON, yüklediğinizde jQuery tarafından ayrıştırılır, bunu kullanmak için verileri ayrıştırmanız gerekmez.

$('div#ListingData').text(data.data.items[0].links[1].caption); 
herhangi tırnak değiştirilmesi gerekiyorsa, bu, sadece object.This madde haline JSON dizesi dönüştürmek için bir mükemmel biçimli JSON dize ihtiyaç olduğunu olduğunu sanmıyorum
0

mükemmel açıklıyor: Sadece verilerde dizeyi kullanın durum: Link

Örnek:

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

ne sizin örnekte bir JSON dizesi yapıyor yapıyoruz. JSON.stringify()'u kullanmayın ya da JSON verileriniz geri gelip teklifleri istemiyorsanız, JSON yanıtlarındaki teklifleri kaldırmak için sadece JSON.parse() kullanın! Regex kullanmayın, gerek yok. Eğer örnekteki gibi verilerinizi bildiğinizde niş için

13

ihtiyacı ... Bu işler: Ben de ancak benim durumumda, bu soru vardı

JSON.parse(this_is_double_quoted); 

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

Çünkü, bir normal ifadeler kullanabilirsiniz istemiyordu benim JSON değeri, tırnak işaretleri içerebilir. Umarım benim cevabım gelecekte başkalarına yardımcı olacaktır.

Bu sorunu, ilk ve son karakterleri kaldırmak için standart bir dize dilimi kullanarak çözdüm. Bu benim için çalışıyor, çünkü textarea üzerindekullandı ve sonuç olarak, her zaman dizenin her sonunda " s olacak biliyorum.

Bu genelleştirilmiş örnekte, response, JSON nesnesinin AJAX'ını döndürür ve key, JSON anahtarımın adıdır.

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

ben satır sonları korumak ve benim HTML Paragraf bloğuna o tuşun içeriğini yazmak için regex replace ile bunu böyle kullandı: Bu durumda

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

, $('#description') olduğunu paragraf etiketi için yazıyorum. studyData benim JSON nesnesidir ve description çok satırlı bir değere sahip anahtarımdır.

+0

Bu sadece üzerinde çalıştığım tam olarak ... çok yararlı, teşekkürler. :) – dav