2010-11-24 27 views
1

Ich habe folgende json Antwort von einem url:JSON Deserialisierung Gson mit

stdClass Object 
(
    [uname] => Eamorr 
    [phoneNumber] => 082732938293 
    [fname] => Steve 
    [lname] => Hearst 
    [sex] => M 
    [roofSignNumber] => 230948 
    [vehicleReg] => 07D2892 
    [vehicleMake] => Toyota 
    [vehicleModel] => Avensis 
    [vehicleNumPassengers] => 4 
    [profilePic] => -1 
    [online] => 1 
    [status] => 
    [picList] => Array 
     (
     ) 

    [lat] => 
    [lng] => 
    [reputation] => 0.63 
    [numPagesComments] => 1 
    [last5comments] => Array 
     (
      [0] => stdClass Object 
       (
        [comment] => hello5 
        [fromUname] => Eamorr 
        [profilePic] => -1 
        [time] => 1290254763 
        [id] => 23628mr28018onm647z2 
       ) 

     ) 

) 

Und hier ist, wie ich die Parse mache:

     Gson json=new Gson(); 
         try{ 
          Driver driver=json.fromJson(response,Driver.class); 
          Log.i("json",driver.profilePic); 
         }catch(JsonParseException e){ 
          Log.i("error","JsonParseException"); 
         } 

Wenn ich den Code ausführen, bekomme ich dies Fehler: FEHLER/AndroidRuntime (823): java.lang.RuntimeException: No-args Konstruktor für Klasse com.project.driver.Driver $ Beitrag existiert nicht. Registrieren Sie einen InstanceCreator mit Gson für diesen Typ, um dieses Problem zu beheben.

Ich habe Probleme mit der Definition eines geeigneten Driver.java für die Analyse. Als ich die ‚last5comments‘ Feld nicht angeben, funktioniert alles einwandfrei, es ist nur das Bit ‚last5comments‘ ich mit Mühe, bin ...

Hier Driver.java ist:

public class Driver { 
    public String uname=""; 
    public String phoneNumber=""; 
    public String fname=""; 
    public String lname=""; 
    public String sex=""; 
    public String roofSignNumber=""; 
    public String vehicleReg=""; 
    public String vehicleMake=""; 
    public String vehicleModel=""; 
    public String vehicleNumPassengers=""; 
    public String profilePic=""; 
    public String online=""; 
    public String status=""; 
    public String[] picList; 
    public String lat=""; 
    public String lng=""; 
    public String reputation=""; 
    public String numPagesComments=""; 

    //having problems below this line 
    public Post[] last5comments; 

    public class Post{ 
     public String comment=""; 
     public String fromUname=""; 
     public String profilePic=""; 
     public String time=""; 
     public String id=""; 
    } 
} 

Jede Hilfe bei der Definition Ein passender Driver.java wird sehr geschätzt.

http://sites.google.com/site/gson/gson-user-guide#TOC-Nested-Classes-including-Inner-Clas

(Abschnitt "Verschachtelte Klassen (einschließlich Inner Classes)")

:

Vielen Dank im Voraus,

Antwort

7

Ich habe es geschafft, indem man dieses Problem beheben Ich musste lediglich das Post-Objekt statisch machen.

public static class Post{ 
     public String comment=""; 
     public String fromUname=""; 
     public String profilePic=""; 
     public String time=""; 
     public String id=""; 
    } 
+3

Korrekt. Oder machen Sie es zu einer Top-Level-Klasse, indem Sie es in eine separate Datei verschieben (in diesem Fall ohne statische). –

Verwandte Themen