名前JSONだったが、私はエラーを取得しておくGSONはBegin_objectを期待しますが、私はJSONオブジェクトを解析しようとしている
Caused by: com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was NAME at line 1 column 3 path $.
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:187)
at com.google.gson.Gson.fromJson(Gson.java:805)
at com.example.alcanzer.dotastats.HeroDetActivity$MyRanks.doInBackground(HeroDetActivity.java:83)
at com.example.alcanzer.dotastats.HeroDetActivity$MyRanks.doInBackground(HeroDetActivity.java:70)
at android.os.AsyncTask$2.call(AsyncTask.java:292)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was NAME at line 1 column 3 path $.
at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:387)
at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:176
JSONオブジェクトは
{"hero_id":1,"rankings":[{"account_id":168340162,"score":480.772994325575,"personaname":"period","name":"tmt","avatar":"https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/d1/d108bc7c584279b3bfd6147638145b596b5a3649.jpg","last_login":"2017-05-28T18:49:16.421Z","solo_competitive_rank":8883},{"account_id":122049498,"score":457.296281991582,"personaname":"Mike Ross","name":null,"avatar":"https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/74/745695c8d79c0967ce5cbb63aab90174d0ff427b.jpg","last_login":"2017-08-05T21:55:15.653Z","solo_competitive_rank":7124},{"account_id":178032556,"score":403.130664542372,"personaname":"Never","name":null,"avatar":"https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/1b/1b07713e510b7c5ca75c0b9b45a6e44182e64e0c.jpg","last_login":"2016-10-26T17:51:51.451Z","solo_competitive_rank":8067},{"account_id":113995822,"score":372.559981235015,"personaname":"iLTW","name":"iLTW","avatar":"https://steamcdn-a.akamaihd.net/steamcommunity/public/images/avatars/9a/9a2a4e758879c0a8851839f0385028c9cef6ac70.jpg","last_login":"2017-01-20T17:11:50.488Z","solo_competitive_rank":8890}]}
はそれを短くですが、JSON有効です。私は複数の場所にチェックインしました。
私のクラスは
public class Rankings {
int hero_id;
Ranks[] rankses = null;
public int getHero_id() {
return hero_id;
}
public Ranks[] getRankses() {
return rankses;
}}
public class Ranks {
@SerializedName("account_id")
int account_id;
@SerializedName("score")
float score;
@SerializedName("personaname")
String personaname;
@SerializedName("name")
String name;
@SerializedName("avatar")
String avatar;
@SerializedName("last_login")
String last_login;
@SerializedName("solo_competitive_rank")
int solo_competitive_rank;
public int getAccount_id() {
return account_id;
}
public float getScore() {
return score;
}
public String getPersonaname() {
return personaname;
}
public String getName() {
return name;
}
public String getAvatar() {
return avatar;
}
public String getLast_login() {
return last_login;
}
public int getSolo_competitive_rank() {
return solo_competitive_rank;
}}
JSONを読んでイムは私がreader.endObjectにreader.beginObjectからコードをコメントアウトするときに必要なものを得るか
JsonReader reader = new JsonReader(new InputStreamReader(conn.getInputStream()));
/*JsonParser parser = new JsonParser();
JsonObject obj = parser.parse(reader).getAsJsonObject();
rank = gson.fromJson(obj.get("rankings"), Ranks[].class);*/
reader.beginObject();
rank = gson.fromJson(reader, Rankings.class);
reader.endObject();
reader.close();
あるコードブロックですコメント部分のコメントを外します。
しかし、なぜエラーが発生しているのかを知りたいのですが。私はどこかで間違いを犯しましたか?