1

私は、このjson文字列を読み取る必要があるAndroidアプリに取り組んでいます:

{
"coord":{
       "lon":145.77,
       "lat":-16.92
},
"weather":[
          {
        "id":803,
        "main":"Clouds",
        "description":"broken clouds",
        "icon":"04n"
        }
        ],
  "base":"cmc stations"
}

これに似たもの。

"coord"次の方法を使用して、値を正常に読み取ることができます。

public Coordinates readCoordinates(JsonReader reader) throws IOException{
    double longitude = 0.0;     // lon
    double latitude  = 0.0;     // lat

    reader.beginObject();

    while (reader.hasNext()){
        String nameToRead = reader.nextName();
        if(nameToRead.equals("lon")){
            longitude = reader.nextDouble();
        }else if (nameToRead.equals("lat")){
            latitude = reader.nextDouble();
        }else {
            reader.skipValue();
        }
    }
    reader.endObject();
    return (new Coordinates(longitude, latitude));
}

を読むための同様の方法があり"weather"ます:

public Weather readWeather(JsonReader reader) throws IOException{
    int id = 0;
    String main         = "";
    String description  = "";
    String icon         = "";

    reader.beginObject();
    while (reader.hasNext()){
        String nameToRead = reader.nextName();
        if(nameToRead.equals("id")){
            id = reader.nextInt();
        }else if (nameToRead.equals("main")){
            main = reader.nextString();
        }else if (nameToRead.equals("description")){
            description = reader.nextString();
        }else if (nameToRead.equals("icon")){
            icon = reader.nextString();
        }else{
            reader.skipValue();
        }
    }
    reader.endObject();
    return (new Weather(id, main, description, icon));
}

この例外メッセージが表示され続けますExpected BEGIN_OBJECT but was BEGIN_ARRAY

に変更reader.beginObject()するreader.beginArray()と、同じエラーが発生します。また、完全に削除しようとしましたが、同じエラーが発生しました。

これは の導入が原因であると推測し[ていますが、これを修正する方法がよくわかりません。誰かが手がかりを持っているなら、助けてください、本当に感謝します、ありがとう。

4

2 に答える 2

0

gsonモデルクラスの中を見てください。jsonの通り

"weather":[
          {
        "id":803,
        "main":"Clouds",
        "description":"broken clouds",
        "icon":"04n"
        }
        ]

として解析する必要がありjsonArrayますが、モデルクラス内では として期待していると思いますjsonObject

http://www.jsonschema2pojo.org/を使用して、json に従って正確な Java モデル クラスを取得します。

于 2015-12-04T11:42:58.717 に答える