2016-08-05 3 views
0

У меня есть следующий построить в своем коде для следующего JSONtoString() изменяет фигурные фигурные скобки на квадрат?

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

     } 
} 

Для этого у меня есть следующий код в 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()); 

Вот как я пытаюсь использовать его в формат JSON для передавать по проводу Обратите внимание, что значение свойства в JSON должна быть строка

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

Это устанавливает свойство 'вар' в формате JSON, чтобы быть

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

Вместо

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

Что мне не хватает?

+0

Получаем этот результат '{" var ": {" SomeVariable ":" [FirstVar = [service1 = value1]] "}}', а не любой из представленных вами вариантов. –

+0

Непонятно также, почему вы храните результат 'toString'' entrySet'. –

+0

вы можете использовать 'Map '? это может избежать вашего 'toString()' – Imran

ответ

0

ToString() из HashMap не возвращает данные в формате JSON. Если вы хотите, чтобы объекты JSON использовали только JSONObject.

В качестве альтернативы, использование XStream:

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

jsonRepresentation будет иметь свой JSON. Да, по причинам, известным только древним мудрецам, xstream использует toXML для сериализации. Это неправильно, и вряд ли что-то изменится.