toString()将花括号变成方形?

时间:2016-08-05 16:46:57

标签: java json hashmap tostring

我的代码中有以下构造用于以下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);

这会设置&#39; var&#39; json中的财产

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

而不是

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

我错过了什么?

1 个答案:

答案 0 :(得分:0)

HashMap的toString()不返回JSON格式的数据。如果您希望JSON对象仅使用JSONObject。

或者,使用xstream:

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

jsonRepresentation将有你的json。是的,由于古代圣贤只知道的原因,xstream使用XML进行序列化。它被误称,不太可能改变其他任何东西。