2016-08-05 11 views
0

Ich habe die für die folgende JSON in meinem Code folgenden KonstrukttoString() ändert die geschweiften Klammern in ein Quadrat?

SomeVariable = 
    { 
     "FirstVar":{ 
      "service1":"value1" 

     } 
} 

Dazu habe ich folgende Code in Java

 Map<String,String> internal_service_var = new HashMap<String,String>(); 
     internal_service_endpoint.put("service1","value1"); 

     Map<String, String> first_var = new HashMap<String,String>(); 
     first_var.put("FirstVar", internal_service_var.entrySet().toString()); 

     Map<String, String> some_var = new HashMap<String, String>(); 
     some_var.put("SomeVariable", first_var.entrySet().toString()); 

Hier ist, wie ich versuche, es in der JSON zu verwenden senden über Draht Beachten Sie, dass der Wert der Eigenschaft in der JSON ein String sein muss

JSONObject json = new JSONObject 
json.put("var", some_var); 

Dies setzt die 'var' Eigenschaft im json

[SomeVariable = [ "FirstVar":[ "service1":"value1"]]] 

Statt

SomeVariable = { "FirstVar":{ "service1":"value1"}} 

zu sein Was bin ich?

+0

Ich bekomme dieses Ergebnis '{" var ": {" SomeVariable ":" [FirstVar = [service1 = value1]] "}}', nicht eine der Varianten, die Sie präsentiert haben. –

+0

Es ist auch unklar, warum Sie das 'toString'-Ergebnis des' entrySet' speichern. –

+0

können Sie 'Map '? Dies kann Ihre 'toString()' – Imran

Antwort

0

Die toString() von HashMap gibt die Daten im JSON-Format nicht zurück. Wenn Sie möchten, dass JSON-Objekte nur JSONObject verwenden.

Alternativ Verwendung xstream:

XStream xstream = new XStream(new JettisonMappedXmlDriver()); 
xstream.setMode(XStream.NO_REFERENCES); 
String jsonRepresentation = map.toXML(); 

jsonRepresentation Ihre json haben. Ja, aus Gründen, die nur alten Weisen bekannt sind, verwendet xstream toXML für die Serialisierung. Es ist falsch benannt und wird sich wahrscheinlich zu nichts ändern.

Verwandte Themen