2012-04-09 11 views
1

Ich möchte eine Zeichenfolge lesen, die wie eine JSON-Datei formatiert ist und es auf dem Bildschirm drucken. Deshalb benutze ich die GSON-Library.Parsing Json-Datei mit Gson: MalformedJsonException

Jedesmal, wenn ich kompilieren möchte ich eine Exception in thread "main" com.google.gson.JsonSyntaxException Fehler

Mein Code wie diesen

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); 
} 
} 

sieht ich die Störung erhalte:

Exception in thread "main" com.google.gson.JsonSyntaxException: com.google.gson.stream.MalformedJsonException: Expected name at line 1 column 221 at com.google.gson.Gson.fromJson(Gson.java:769) at com.google.gson.Gson.fromJson(Gson.java:721) at com.google.gson.Gson.fromJson(Gson.java:670) at com.google.gson.Gson.fromJson(Gson.java:642) at Test.main(Test.java:19) Caused by: com.google.gson.stream.MalformedJsonException: Expected name at line 1 column 221 at com.google.gson.stream.JsonReader.syntaxError(JsonReader.java:1298) at com.google.gson.stream.JsonReader.nextInObject(JsonReader.java:739) at com.google.gson.stream.JsonReader.peek(JsonReader.java:382) at com.google.gson.stream.JsonReader.hasNext(JsonReader.java:349) at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:169) at com.google.gson.Gson.fromJson(Gson.java:755) ... 4 more

so passiert der Fehler hier:

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

Ich denke, dass meine JSON-Daten in einem falschen Format zur Verfügung gestellt werden.

Antwort

3

Ich denke, Ihre JSON nicht gut

gebildet

es so etwas wie dieses

"{ 
    "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 
}" 

sollten Sie Ihre JSON hier http://jsonlint.com/

+2

Vielen Dank für Ihre hilfreiche Antwort und der Validator-Seite validieren ! Natürlich benutze du immer "statt" aber da der JSON eigentlich ein String ist ist die Verwendung von 'richtig. Der Fehler war hier: +' 'tag_description_f_a': 'Ein weiteres Highlight in H' ->, <- " Ich habe gerade das Komma entfernt und jetzt funktioniert es;) – RCK69