如果POST / PATCH正文需要看起来像这样
{
"class_name" : {
"field_a" : "fjdksljf"
"field_b" : "jfsljd"
...
etc.
}
}
我有一个POJO
public class ClassName () {
@SerializedName("field_a")
String fieldA;
@SerializedName("field_b")
String fieldB;
... etc.
}
我想通过它
@PATCH("endpoint_url")
Call<ResponseBody> testFunction(@Body ClassName class)
如何用JSON请求所需的class_name
映射对类本身进行注释?不创建一个包装ClassName并在其中使用序列化名称进行注释的RequestClass?
(我尝试用@SerializedName
注释类,但这给了我一个“不适用于类型”警告。)
答案 0 :(得分:0)
这对我来说是一个很好的解决方案。尽管可以将其包装在另一个类中,但在我的用例中这实际上没有任何意义,因为我的大多数POST主体都需要一个JSON密钥来发送我的POJO。
// to use the necessary @SerializedName annotations
String classNameJson = new Gson().toJson(className); // {"field_a": "fjdksljf", "field_b" : "jfsljd", ... etc.}
JSONObject json = new JSONObject();
try {
// must make this a new JSONObject or else it will handle classNameJson as a string and append unnecessary quotes
json.put("class_name", new JSONObject(classNameJson));
} catch (JSONException e) {
// handle the error
}
String result = json.toString();
结果应打印类似{"class_name":{"field_a": "fjdksljf", "field_b" : "jfsljd", ... etc.}}
从以下帖子中得到了这个想法: