2016-04-03 16 views
0

aşağıda görüldüğü gibi ben JSONJSON XML üreten istenmeyen sonuçlar

<dependency> 
     <groupId>org.json</groupId> 
     <artifactId>json</artifactId> 
     <version>20160212</version> 
    </dependency> 

Basit test durumu XML'DEN dönüştürmek için, org.json kütüphane kullanıyorum, ben yaşıyorum sorunu gösterir aşağıya bakınız: -

Ben aşağıdaki XML var

<record> 
    <name>A108B</name> 
</record> 
sırayla,

{"record": { "id": "A108B" }} 

Yüksek, üretir

! id

ise sorun ben aslında tüm dizeleri, yani kullanıcı tanımlayıcıları gibi değerleri kalmasını tercih ederim

{"record": { "name": 1111 }} 

olsun aşağıdaki kodu

XML.toJSONObject(xml...) 

kullanma oluşur. Çıktının tanımlayıcıda bir karakterin bulunup bulunmadığına bağlı olarak değişmesini istemiyorum.

Bunu yapmak için org.json'u zorlamanın bir yolu var mı? Muhtemelen kodu çatabilir ve kendim için bir değişiklik yapabilirim ama bunun bir başkasının karşılaştığı ve çözümü için bir problem olduğunu umuyorum.

+0

http://www.utilities-online.info/xmltojson/#.VwFtQBMrJmB de aracı ben görmek istiyorum nasıl dönüştürmek gibi görünüyor. – chrisw

cevap

1

, ben JSONTokener ait nextValue geçersiz gerekiyordu.

String xml = "<test>111</test>"; 
    JSONObject json = XML.toJSONObject(xml); 
    JSONTokener tokener = new JSONTokener(json.toString()) { 
     public Object nextValue() throws JSONException { 
      Object nextValue = super.nextValue(); 
      if (nextValue instanceof Number) { 
       Number value = (Number) nextValue; 
       return value.toString(); 
      } 
      return nextValue; 
     } 
    }; 
    json = new JSONObject(tokener); 
    System.out.println(json.toString()); 

Çıktı: {"test":"111"}

0

XML.toJSONObject(...) içten hepBoolean, JSONObject.Null, Long ve Double ilk değer dönüştürmek ve tüm dönüşüm girişimleri başarısız sadece String dönmek için çalışacağız static Object stringToValue(String string) çağırır. Bunun etrafında (kolay) bir yol yok gibi görünüyor. okurken

yerine çatallama ya da bazı yansıma sihirli yapmanın, sadece değerini dönüştürebilirsiniz:

Bu hileye neden olabilir
JSONObject rec = json.getJSONObject("record"); 
String name = rec 
       .get("name") 
       .toString(); 

// optionally put the string value back into your JSON: 
rec.put("name", name); 
+0

Maalesef yaptığım test vakası büyük ölçüde xml/json'u basitleştiriyor. Tüm hiyerarşiyi geçmek zorunda kalırsam, muhtemelen kendi xml'imi json dönüştürücüsüne yazabilirim. – chrisw

+0

@chrisw Sanırım, en iyi seçeneğiniz XML komutunu kopyalamak ve statik nesne stringToValue (String string) Kendi uygulamanız ile yöntem. – nyname00