无法使用Rest API数据填充pojo

时间:2014-09-12 15:34:23

标签: java android json retrofit android-bootstrap

我从这个链接使用android-bootsrap来实现我的项目     https://github.com/AndroidBootstrap/android-bootstrap

我保留了项目结构,而不是执行身份验证。在我的应用程序中,我正在调用一个以Json格式返回数据的rest API。使用改造,我们也在调用服务并在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是研究生”}

1 个答案:

答案 0 :(得分:1)

因此,您的User / UserWrapper类设置GSON的方式是期望JSON结果如下所示:

{
  "results": {
    "name": "user1",
    "short_description": "user1 is a postgraduate student"
  }
}

如果JSON结果只是&#34;结果中的内容&#34;在上面的示例中,您可能希望将UserWrapper全部丢弃,并将服务接口更改为:

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