我正在为我的项目使用此链接中的 android-bootsrap
https://github.com/AndroidBootstrap/android-bootstrap
我保留了项目结构,不执行身份验证。在我的应用程序中,我正在调用 REST API,该 API 以 Json 格式返回数据。使用 Retrofit,我们调用服务并获取 Json 格式的数据。
我们为 Json API 创建了一个 POJO 类。但在我的应用程序中,我们无法获取填充有 Rest API 数据的 Pojo 对象。
我的代码如下: User.java
public class User implements Serializable {
private String shortDescription;
private String name;
public String getShortDescription() { return shortDescription;}
public void setShortDescription(String shortDescription) {
this.shortDescription = shortDescription;
}
public String getName() { return name; }
public void setName(String name) { this.name = name; }
}
UserService.java
public interface UserService {
@GET("/search/items")
UsersWrapper getUsers();
}
UserWrapper.java
public class UsersWrapper {
private User results;
public User getResults() { return results; }
}
MainActivity.class
public class MainActivity extends BaseActivity {
String data = "";
private User user;
@Inject protected BootstrapServiceProvider serviceProvider;
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new MyTask().execute();
}
// making async request
class MyTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
try {
user = serviceProvider.getService().getUsers();
user.getShortDescription(); // here i am getting NullPointerException
} catch (IOException e) {
e.printStackTrace();
}
return data;
}
}
我正在改造日志中获取数据,但是当我尝试通过 User 对象获取数据时,我收到 NullPointerException。
我的Json数据如下:
{"name":"user1","short_description":"user1 是研究生"}
最佳答案
因此,您的 User/UserWrapper 类设置 GSON 的方式期待一个如下所示的 JSON 结果:
{
"results": {
"name": "user1",
"short_description": "user1 is a postgraduate student"
}
}
如果 JSON 结果只是上面示例中“结果” block 内的内容,您可能希望完全放弃 UserWrapper,并将您的服务接口(interface)更改为如下所示:
public interface UserService {
@GET("/search/items")
User getUsers();
}
如果 JSON 结果是用户数组,例如
[
{
"name": "user1",
"short_description": "user1 is a postgraduate student"
},
...
]
然后你会希望你的界面看起来像:
public interface UserService {
@GET("/search/items")
List<User> getUsers();
}
关于java - 无法使用 Rest API 数据填充 pojo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25811875/