0

我正在从https://github.com/AndroidBootstrap/android-bootstrap为我的项目使用此链接中的 android-bootsrap

我保留了项目结构,不执行身份验证。在我的应用程序中,我正在调用一个以 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; }
}

用户服务.java

 public interface UserService {
   @GET("/search/items")
   UsersWrapper getUsers();
 }

用户包装器.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;
    }
}

我在改造日志中获取数据,但是当我尝试通过用户对象获取数据时,我得到了 NullPointerException。

我的Json数据如下:

{"name":"user1","short_description":"user1 是研究生"}

4

1 回答 1

1

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

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

如果 JSON 结果只是上面示例中“结果”块中的内容,您可能希望将 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();
}
于 2014-09-12T15:48:00.653 回答