相关疑难解决方法(0)

如何从JSONObject中删除nameValuePairs键?

我正在研究一个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会自动添加到对象中.

有谁知道我该如何解决这个问题?

rest android json retrofit

23
推荐指数
3
解决办法
1万
查看次数

如何将对象添加为JsonObject对象的属性?

这是我在做的事情:

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()

java json gson

13
推荐指数
1
解决办法
2万
查看次数

标签 统计

json ×2

android ×1

gson ×1

java ×1

rest ×1

retrofit ×1