2016-04-24 9 views
0

ich arbeite an meinem Schulprojekt und ich bin neu in Android-Programmierung, aber ich habe einige Programmiererfahrung in C# und .net.Nicht in der Lage, JSON in Java-Klasse zu konvertieren (Aufruf WebApi von Android App)

Dies ist mein Code:

public class ProizvodiAPI { 

    public class ProizvodiVM implements Serializable 
    { 
     public Integer proizvodID; 
     public String naziv; 
     public String sifra; 
     public BigDecimal cijena; 
     public Byte[] slikaThumb; 
     public String jedinicaMjere; 
     public String vrstaProizvoda; 
    } 
     public class ProizvodiLista implements Serializable 
     { 
      public List<ProizvodiVM> proizvodi; 
     } 
public static void GetAllProizvode(final MyRunnable<ProizvodiLista> onSuccess) 
    { 

     RequestQueue queue = Volley.newRequestQueue(MyApp.getContext()); 
     String url = "Proizvodi/GetProizvodiVM"; 

     // Request a string response from the provided URL. 
     StringRequest stringRequest = new StringRequest(Request.Method.GET, Config.urlApi + url, 
       new Response.Listener<String>() 
       { 
        @Override 
        public void onResponse(String response) 
        { 
         final Gson gson = MyGson.build(); 
         final ProizvodiLista model = gson.fromJson(response, ProizvodiLista.class); 
         onSuccess.run(model); 
        } 
       }, new Response.ErrorListener() 
     { 
      @Override 
      public void onErrorResponse(VolleyError error) 
      { 

       Toast.makeText(MyApp.getContext() , "That didn't work", Toast.LENGTH_LONG).show(); 
      } 
     }); 
     // Add the request to the RequestQueue. 
     queue.add(stringRequest); 
    } 
} 

Programm stürzt hier:

final ProizvodiLista model = gson.fromJson(response, ProizvodiLista.class); 

Ist das Problem mit Deserialisieren json, wenn es ist, shoud i die Java-Klasse ändern und was zu ändern?

Hier ist meine C# -Klasse in Web Api:

public class Proizvodi 
    { 
     public int ProizvodID { get; set; } 
     public string Naziv { get; set; } 
     public string Sifra { get; set; } 
     public decimal Cijena { get; set; } 
     public byte[] SlikaThumb { get; set; } 

     public string JedinicaMjere { get; set; } 
     public string VrstaProizvoda { get; set; } 
    } 
+0

Und was ist der Wert der Antwort, die Sie in ProizvodiLista.class konvertieren möchten? –

+0

Dies ist meine Antwort von fidler (Ergebnis ist gleich in "Antwort" Variable in Android) http://vpaste.net/VIuVC PS: Ich schließe öffentliche Byte [] SlikaThumb von beiden, C# und Jaca-Klasse, aber die Fehler ist immer noch der gleiche. – TariqN

Antwort

0

Basierend auf der Antwort, die Sie empfangen werden, es ist ein JSONArray und keine einfache JSONObject. Deserialisieren Sie es richtig.

Verwandte Themen