初めて質問させていただきます。情報の不足がありましたら追加させていただきます。
AndroidでString型の変数(userID)を持つオブジェクト(UserEntity)をJSONデータに変換してPOSTしたいのですが、以下のエラーが出て困っています。
logcat
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 2 path $ ```> 引用テキスト 通信処理の際にRxAndroidを用いています。 HomeActivity.java ```java public class HomeActivity extends AppCompatActivity { // 通信用の定数など public static final String BASE_URL = "http://example.com/index.php"; private static final String TAG = HomeActivity.class.getSimpleName(); private Subscription subscription; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_home); // Gson Gson gson = new GsonBuilder() .setFieldNamingPolicy(FieldNamingPolicy.LOWER_CASE_WITH_UNDERSCORES) .registerTypeAdapter(Date.class, new DateTypeAdapter()) .create(); // Retrofit Retrofit retrofit = new Retrofit.Builder() .baseUrl(BASE_URL) .addConverterFactory(GsonConverterFactory.create(gson)) .addCallAdapterFactory(RxJavaCallAdapterFactory.create()) .build(); // API UserApi uApi = retrofit.create(UserApi.class); // UserEntity UserEntity userInstance = new UserEntity(userID); // 非同期処理 this.subscription = uApi.createUser(userInstance) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Observer<UserEntity>() { @Override public void onNext(UserEntity ue) { Log.d(TAG, "onNext()にきた"); } @Override public void onCompleted() { Log.d(TAG, "onComplete()にきた"); } @Override public void onError(Throwable e) { Log.e(TAG, "エラー : " + e.toString()); } }); } @Override protected void onDestroy() { // サブスクライブ解除 this.subscription.unsubscribe(); super.onDestroy(); } }
UserApi.java
java
1public interface UserApi { 2@POST("userfirst/write.json") 3public Observable<UserEntity> createUser(@Body UserEntity ue); 4}
UserEntity.java
java
1public class UserEntity { 2 3// コンストラクタ 4public UserEntity(String userID){ 5 this.userID = userID; 6} 7 8// JSONとの対応 9@Expose 10@SerializedName("user_id") 11private String userID; 12}
app/build.gradle
gradle
1dependencies { 2compile fileTree(dir: 'libs', include: ['*.jar']) 3testCompile 'junit:junit:4.12' 4compile 'com.android.support:appcompat-v7:23.0.1' 5compile 'com.google.code.gson:gson:2.4' 6compile 'com.squareup.retrofit:retrofit:2.0.0-beta2' 7compile 'com.squareup.retrofit:converter-gson:2.0.0-beta2' 8compile 'com.squareup.okhttp:okhttp:2.7.0' 9compile 'io.reactivex:rxandroid:0.24.0' 10compile 'io.reactivex:rxjava:1.1.0' 11compile 'com.squareup.retrofit:adapter-rxjava:2.0.0-beta2' 12compile 'io.reactivex:rxandroid:1.1.0' 13}
エラーメッセージで調べてみたものの、解決方法を探し出すことができませんでした。
どなたかわかる方がいらっしゃいましたらよろしくお願いいたします。