0

https://github.com/AndroidBootstrap/android-bootstrapからのプロジェクトのこのリンクから android-bootsrap を使用しています

プロジェクトの構造をそのまま保持し、認証を行いませんでした。私のアプリでは、Json 形式でデータを返す残りの API を呼び出しています。レトロフィットを使用して、サービスを呼び出し、Json でデータを取得しています。

Json API 用に 1 つの 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;
    }
}

改造ログでデータを取得していますが、ユーザー オブジェクトを介してデータを取得しようとすると、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 に答える