2016-08-05 45 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.