toString() 将花括号更改为正方形?

toString() changes the curly braces into square?

我的代码中有以下构造用于以下 JSON

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中属性的值需要是一个String

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

这会将 json 中的 'var' 属性 设置为

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

而不是

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

我错过了什么?

HashMap 的toString() 没有return JSON 格式的数据。如果您想要 JSON 个对象,请仅使用 JSON 个对象。

或者,使用 xstream:

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

json代表会有你的json。是的,出于只有古圣才知道的原因,xstream 使用 toXML 进行序列化。它的命名有误,而且不太可能更改为其他名称。