2011-07-06 21 views
27

Jackson kütüphanesini kullanmak için yeni bir kullanıcıyım.Tek tırnaklı (geçersiz) JS serisini serileştirmek için yapılandırın. JSON

Bunu [aşağıya] yapmaya çalışıyorum ve hata atıyor.

String x="{'candidateId':'k','candEducationId':1,'activitiesSocieties':'Activities for cand1'}"; 
ObjectMapper mapper = new ObjectMapper(); 

try { 
    JsonNode df=mapper.readValue(x,JsonNode.class); 
    int i=0; 
} catch ..... 

İstisna:

org.codehaus.jackson.JsonParseException: Unexpected character (''' (code 39)): was expecting double-quote to start field name 
at [Source: [email protected]; line: 1, column: 3] 
    at org.codehaus.jackson.JsonParser._constructError(JsonParser.java:1291) 

Çift tırnak işareti (") JSON

+0

http://stackoverflow.com/questions/1688099/converting-json-to-java/1688182#1688182 http: //

String x = "{'candidateId':'k','candEducationId':1,'activitiesSocieties':'Activities for cand1'}"; ObjectMapper mapper = new ObjectMapper(); mapper.configure(JsonParser.Feature.ALLOW_SINGLE_QUOTES, true); JsonNode df = mapper.readValue(x, JsonNode.class); System.out.println(df.toString()); // output: {"candidateId":"k","candEducationId":1,"activitiesSocieties":"Activities for cand1"} 
rahularyansharma

cevap

54

O var geçerli JSON değil, ancak Jackson'a izin vermesini söyleyebilirsin. İşte nasıl.

var jsonString ='{"it":"Stati Uniti d'America"}'; 
jsonString =jsonString.replace("'", "\\\\u0027"); 
+0

@Bruce Öneriniz için Bruce teşekkürler. Tam olarak aradığım şey bu. –

16

Strings ile tek tırnak (') yerine aynı şey çalışsa da olabilir sadece. çift ​​tırnak işareti ("), değil tek tırnak işaretleri (') kullanılarak belirtilebilir, bu sizin err nedenidir veya; çift ​​tırnak kullanın. İşte

geçerli JSON dizeleri belirtir boru şeması var (onlar sadece çift tırnak ile kapsül haline getirilebilir dikkat!)

Valid JSON Strings Pipe Diagram http://www.json.org/string.gif

(JSON tam bir şartname için json.org bakın.)

+1

Sorun javascript'te tek bir alıntıyla kesinlikle geçerli bir json nesnesi oluşturabilir, ancak bunu java'da ayrıştıramam. Tek alıntıyı jackson –

+2

@Pipalayan ile ayrıştırmadan önce çift tırnak işareti ile değiştirmek zorundayım: sorun, tek tırnakların * JSON'da geçerli olmaması *, belirtime bakın. Bu kitaplığı kullanarak tek tırnakları ayrıştıramazsınız, çünkü basitçe, ayrıştırıcınıza geçersiz girdi veriyorsunuz. –

+5

"javascript'te tek bir alıntıyla kesinlikle geçerli bir json nesnesi oluşturabilirim" - JavaScript tek tırnaklara izin verebilir, ancak bu geçerli JSON anlamına gelmez. –

0

Bu

o benim durumumda böyle mi işliyor code.google.com/p/google-gson/
İlgili konular