2016-08-21 102 views
0

JSON字符串我有一个简单的对象这样GSON - 从创建对象和viseversa

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"}} 

回答

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"}}