GSON - 从Object和viseversa创建JSON字符串

时间:2016-08-21 18:19:52

标签: json gson

我是一个像这样的简单对象

public class WebMessage
{
    public String destinationAddress;
    public String clientType;
    public JsonObject params;
}

当我想使用GSON从这个对象创建一个JSON字符串时,我会这样做:

WebMessage parringMsg = new WebMessage();
JsonObject parameters = new JsonObject();
parameters.addProperty("action", "PARRING_START");        
parringMsg.params = parameters;        

String finalString = jsonString.toJson(parringMsg);

但最终字符串如下所示:

{"params":{"members":{"action":"PARRING_START"}}}

我不明白为什么我的操作键放在一个成员键中。这是为什么?

我希望它看起来像这样:

{"params":{"action":"PARRING_START"}}

1 个答案:

答案 0 :(得分:0)

我没有在我的类中使用JSONObject,而是使用了HashMap,如下所示:

public class WebMessage
{
    public WebMessage()
    {
        params = new HashMap<>();
    }    
    public String destinationAddress;
    public String clientType;    
    public HashMap<String,String> params;   
} 

然后我可以简单地将值放在那里,这也更简单:

WebMessage parringMsg = new WebMessage();
parringMsg.params.put("action", "PARRING_START");
String finalString = jsonString.toJson(parringMsg);

通过上面的我在finalString中获得所需的输出:

{"params":{"action":"PARRING_START"}}