我正在研究一个Android项目,它需要一个JSONObject作为我的POST请求的主体.在放入JSON的键和值后,我得到以下行:
{
"xxxx":"zzzzzzz",
"yyyy":"uuuuuuu"
}
Run Code Online (Sandbox Code Playgroud)
但服务器得到以下内容:
{
"name_value_pairs": {
"xxxx":"zzzzzzz",
"yyyy":"uuuuuuu"
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试了一个JSONStringer但它并没有真正帮助,因为Content-Type请求是application/json.
UPDATE
我不是要构建一个JSONObject,因为它已经通过使用下面的代码行完成了(@osayilgan给出了相同的代码):
JSONObject jsonRequest = new JSONObject();
jsonRequest.put("xxxx", "zzzzzzz");
jsonRequest.put("yyyy", "uuuuuuu");
Run Code Online (Sandbox Code Playgroud)
这不是问题.下面描述的接口用于与服务器通信.
public interface MyService {
@Headers({"Content-type: application/json",
"Accept: */*"})
@POST("/test")
void testFunction(@Body JSONObject jsonObject, Callback<Response> callback);
}
Run Code Online (Sandbox Code Playgroud)
服务器获得了第二个JSON作为Body的请求令人失望.我注意到密钥name_value_pairs会自动添加到对象中.
有谁知道我该如何解决这个问题?
这是我在做的事情:
JsonObject jobj = new JsonObject();
jobj.addProperty("name", "great car");
Run Code Online (Sandbox Code Playgroud)
我希望添加另一个属性,其值是一个对象,如下所示:
jobj.addProperty("car", A_CAR_OBJECT);
Run Code Online (Sandbox Code Playgroud)
但似乎GSON不允许我这样做jobj.addProperty("car", A_CAR_OBJECT).我最终会做以下事情:
String json = new Gson().toJson(jobj);
Run Code Online (Sandbox Code Playgroud)
得到Json字符串.
这可行吗?我是否正确使用GSON?或者我应该只使用a HashMap将所有数据抛入其中然后new Gson().toJson()?