1

JSON ファイルのようにフォーマットされた文字列を読み取り、画面に出力したいと考えています。したがって、GSON-Library を使用しています。

コンパイルするたびに、スレッド「メイン」com.google.gson.JsonSyntaxExceptionエラーで例外が発生します

私のコードは次のようになります

public class Test {

public static void main(String... args) throws Exception {
    String json = 
        "{"
                    + "'tag_name' : 'M mit Mbrunnen',"
                    + "'tag_id' : 'de_bw_xx_mstall',"
                    + "'tag_description': 'false',"
                    + "'tag_latitude': '42.704895',"
                    + "'tag_longitude': '10.652187',"
                    + "'tag_description_f_a': 'Ein weiteres Highlight in H',"
        + "}";

    // Now do the magic.
    Data data = new Gson().fromJson(json, Data.class);

    // Show it.
    System.out.println(data);
}
}

class Data {
private String tag_name;
private String tag_id;
private String tag_description;
private String tag_latitude;
private String tag_longitude;
private String tag_descrption_f_a;  

public String getName() { return tag_name; }
public String getId() { return tag_id; }
public String getDescription() { return tag_description; }
public String getLatitude() { return tag_latitude; }
public String getLongitude() { return tag_longitude; }
public String getDescriptionVoice() { return tag_descrption_f_a; }

public void setName(String name)                            { this.tag_name = name; }
public void setId(String id)                                { this.tag_id = id; }
public void setDescription(String description)              { this.tag_description = description; }
public void setLatitude(String latitude)                    { this.tag_latitude = latitude; }
public void setLongitude(String longitude)                  { this.tag_longitude = longitude; }
public void setDescriptionVoice(String descriptionVoice)    { this.tag_descrption_f_a = descriptionVoice; }

public String toString() {
    return String.format("%s,%s,%s,%s,%s,%s", tag_name, tag_id, tag_description, tag_latitude, tag_longitude, tag_descrption_f_a);
}
}

エラーが発生しています:

スレッド「メイン」の例外 com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: com.google.gson.Gson.fromJson(Gson.java:769) の com.google.gson.Gson.fromJson(Gson.java:769) の行 1 列 221 に予想される名前.google.gson.Gson.fromJson(Gson.java:721) com.google.gson.Gson.fromJson(Gson.java:670) com.google.gson.Gson.fromJson(Gson.java:642) Test.main(Test.java:19) 原因: com.google.gson.stream.MalformedJsonException: com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1298) の行 1 列 221 に名前が必要ですcom.google.gson.stream.JsonReader.nextInObject(JsonReader.java:739) で com.google.gson.stream.JsonReader.peek(JsonReader.java:382) で com.google.gson.stream.JsonReader.hasNext( JsonReader.java:349) com.google.gson.internal.bind で。ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:169) at com.google.gson.Gson.fromJson(Gson.java:755) ... 4 もっと見る

エラーはここで発生します:

    // Now do the magic.
    Data data = new Gson().fromJson(json, Data.class);

JSON-Data が間違った形式で提供されていると思います。

4

1 に答える 1

3

あなたのJSONは整形式ではないと思います

それはこのようなものでなければなりません

"{
    "tag_name": "M mit Mbrunnen",  // always use double quotes, single quote is not a valid json
    "tag_id": "de_bw_xx_mstall",
    "tag_description": "false",
    "tag_latitude": "42.704895",
    "tag_longitude": "10.652187",
    "tag_description_f_a": "Ein weiteres Highlight in H" // extra comma removed from here
}"

ここで JSON を検証できますhttp://jsonlint.com/

于 2012-04-09T13:29:38.637 に答える