2016-04-25 3 views
0

私の学校プロジェクトに取り組んでいて、アンドロイドプログラミングでは新しいですが、私はC#と.netでいくつかのプログラミング経験を持っています。JSONをJavaクラスに変換する(AndroidアプリケーションからWebApiを呼び出す)

これは私のコードです:

public class ProizvodiAPI { 

    public class ProizvodiVM implements Serializable 
    { 
     public Integer proizvodID; 
     public String naziv; 
     public String sifra; 
     public BigDecimal cijena; 
     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); 
    } 
} 

プログラムは、ここにクラッシュ:

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

は、それがあるならば、私はJavaのクラスを変更し、内容を変更するにはshoud、デシリアライズをJSONでの問題ですか?ここで

は、Web APIの私のC#クラスである:

public class Proizvodi 
    { 
     public int ProizvodID { get; set; } 
     public string Naziv { get; set; } 
     public string Sifra { get; set; } 
     public decimal Cijena { get; set; } 

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

そして、これが応答である: json response

+0

json文字列を共有できますか? – Natan

+0

Jsonの文字列はこのリンクにあります:http://vpaste.net/VIuVC – TariqN

+0

LogCatの出力を提供することは役に立ちます。 GSONでは大文字と小文字が区別されると思います。ですから、最初に 'ProizvodiVM'のパラメータを大文字にしてみてください。 – Phoca

答えて

1

クラッシュの原因を知らずに、私の最高の推測では、あなただけのラップするクラスを作成しているということですリストがクラッシュの原因となっている可能性があります。 ラッパークラスでは、jsonにリストオブジェクト名と一致するキーがあり、値はjson配列になります。

json配列を逆シリアル化するには、this answerをチェックします。

また、ProizvodiVMのフィールドに@SerializedNameアノテーションを使用してみてください。これにより、jsonキーフィールドを正しくマップできます。

+0

私はあなたの助言に従い、私は問題を解決することができました。ありがとう、男。 :) – TariqN

関連する問題