java - 应为字符串,但在第 3 行第 4 列路径 $.SUCCESS 处为 BEGIN_OBJECT
问题描述
我用 Retrofit2 做了一个发布请求方法,但我在回复中遇到了这个问题。
Expected a string but was BEGIN_OBJECT at line 3 column 4 path $.SUCCESS
响应应该是
{
"SUCCESS" :
{
"200" : "access granted",
"ra" : "approved",
"la" : "approved",
"ch" : "approved"
}
}
我将此代码用于发布请求
@POST("login")
Call<Post> createPost(@Body Post post);
对于 POJO 类
public class Post {
private String anthony;
private String SUCCESS;
public Post(String name) {
this.anthony = name;
}
public String getSUCCESS() {
return SUCCESS;
}
}
对于我使用以下代码的方法
private void createPost() {
Post post = new Post("mypassword");
Call<Post> call = jsonPlaceHolderApi.createPost(post);
call.enqueue(new Callback<Post>() {
@Override
public void onResponse(Call<Post> call, Response<Post> response) {
if (!response.isSuccessful()) {
textViewResult.setText("Code: " + response.code());
return;
}
Post postResponse = response.body();
String content = "";
content += "Code: " + response.code() + "\n";
content += "S" + postResponse.getSUCCESS();
textViewResult.setText(content);
}
@Override
public void onFailure(Call<Post> call, Throwable t) {
textViewResult.setText(t.getMessage());
}
});
}
有谁知道我的代码有什么问题?我希望在“SUCCESS”json 对象中得到响应。
解决方案
您希望 SUCCESS 成为您想要的响应中的一个对象,但您已在 Post 类中将其定义为 String 。您应该使用一个对象来代替 SUCCESS。
public class Post {
private String anthony;
private PostSuccess SUCCESS;
public Post(String name) {
this.anthony = name;
}
public PostSuccess getSUCCESS() {
return SUCCESS;
}
}
public class PostSuccess {
@JsonProperty("200")
private String _200;
private String ra;
private String la;
private String ch;
}
推荐阅读
- google-apps-script - 在自定义函数中使用内置函数
- sql-server - IF EXISTS 部分查询未执行
- c++ - 如何遍历具有两个节点的链接节点
- ruby-on-rails - 我的 rails 项目有两个不同的 I18n.load_path 和 I18n.locale
- ios - 当应用不在应用商店中时,Firebase 动态链接未在开发应用中打开
- css - 在一列中显示按钮和 ul 并居中
- neo4j - Neo4j 是否有更有效的方法来编写多个 where-contains?
- tensorflow - 带有手工构建的图像数据生成器的 keras fit_generator():内存不足
- javascript - 在 JS 中用不同的数组替换对象数组
- python - 将 csv 打印到路径