2016-03-28 31 views
-1

mesajını kaldırırken kabul edilmiyor Bir iletiyi seri hale getirmeye çalışıyorum ve aşağıdaki ifade için bir istisna alıyorum. Bu kod iyi çalışıyor eğik çizgi kaldırırsanızileri eğik çizgisi, json

Object key = gson.fromJson("40280381-3d27-5493-013d-4be146935c5c_abcdefg/ijklmnop", Class.forName("java.lang.String")); 

istisna, dize değeri / nedeniyle gerçekleşiyor. Ama dize değerinde /'a ihtiyacım var, lütfen bana bu konuda yardım edin.

Gerçek Yöntem

private void fillTheMap(JsonParser jp, Map<Object, Object> map) { 
    JsonToken jt = jp.nextToken(); 
    while ((jt = jp.nextToken()) != JsonToken.END_ARRAY) { 
     // Get the key. 
     jt = jp.nextToken(); 

     String keyTypeName = jp.getCurrentName(); 
     keyTypeName = keyTypeName.replace(":mapKey", ""); 
     Class keyType = Class.forName(keyTypeName); 

     jt = jp.nextToken(); 

     Object key = gson.fromJson(jp.getText(), keyType); 

     Object value = deSerIze(jp); 
     map.put(key, value); 

     jt = jp.nextToken(); 
    } 
} 

İstisna

com.google.gson.stream.MalformedJsonException: Kullanım JsonReader.setLenient (true) kabul etmek hatalı biçimlendirilmiş JSON

+1

'gson.fromJson' ... Sorun eğik çizgi değil, tüm dizgidir ... JSON –

+1

değil ne istersen .. Gson'u dönüştürmek için Bir String içine string? Lütfen gerçek kodunuzu ve JSON nesnesini gerçekte [mcve] –

+1

Hayır olarak gösterin. Ne yaptığını görmüyor musun? Zaten bir dizgin var. Neden Gson ile serip atmaya çalışıyorsun? –

cevap

-1

Bildiğim kadarıyla JSON karakterlerinin eğik olduğunu bilmeli ed. 'u \/ ile değiştirmeyi deneyin.

Class.forName("java.lang.String") yerine String.class'u da daha güvenilirdir.

+1

oluşturmaktır. Aynı şeyi denedim ama aynı istisnaı alıyorum – user2723039