2017-08-12 13 views
-2

私はコードを試してみましたが、そのはサーバからこのjsonデータを読み取るには?

ArrayList<SpinnerMenu> selectedNetwork = new ArrayList<>(); 
     if(jsonStr != null){ 
      JSONObject json = null; 
      SpinnerMenu spinnerData = new SpinnerMenu(); 
      try { 
       JSONObject json = new JSONObject(jsonStr); 
      } catch (JSONException e1) { 
       e1.printStackTrace(); 
      } 
      // Create the root JSONObject from the JSON string. 
      JSONObject jsonRootObject = null; 
      jsonRootObject = json.optJSONObject("DS"); 

      //Get the instance of JSONArray that contains JSONObjects 
      JSONArray jsonArray = jsonRootObject.optJSONArray("LST"); 

      //Iterate the jsonArray and print the info of JSONObjects 
      for(int i=0; i < jsonArray.length(); i++){ 
       JSONObject jsonObject = null; 
       try { 
        jsonObject = jsonArray.getJSONObject(i); 
       } catch (JSONException e1) { 
        e1.printStackTrace(); 
       } 
       String iph = null; 

       String oid = jsonObject.optString("OID").toString(); 
       String ocd = jsonObject.optString("OCD").toString(); 
       String opd = jsonObject.optString("OPE").toString(); 
       String mil = jsonObject.optString("MIL").toString(); 
       String mxl = jsonObject.optString("MXL").toString(); 


       try { 
        iph = jsonObject.getString("IPH").toString(); 
       } catch (JSONException e1) { 
        e1.printStackTrace(); 
       } 

       String urldisplay = "http://192/TotalRecharge/"+iph; 
       Bitmap mIcon11 = null; 
       try { 
        InputStream in = new java.net.URL(urldisplay).openStream(); 
        mIcon11 = BitmapFactory.decodeStream(in); 
       } catch (Exception e3) { 
        e3.printStackTrace(); 
       } 

       spinnerData.setOid(oid); 
       spinnerData.setOcd(ocd); 
       spinnerData.setOpd(opd); 
       spinnerData.setMil(mil); 
       spinnerData.setMix(mxl); 
       spinnerData.setImage(mIcon11); 

       selectedNetwork.add(spinnerData); 

      } 

いただきました!間違って取得するために私code.Howでは動作しないJSONデータを読み取り、また、サーバー

{ 
    "DS": { 
     "LST": [ 
      { 
       "OID": 1, 
       "OCD": "1", 
       "OPE": "AIRCEL", 
       "IPH": "Images/provider/aircelsm.jpg", 
       "MIL": 10, 
       "MXL": 10 
      }, 
      { 
       "OID": 2, 
       "OCD": "3", 
       "OPE": "AIRTEL", 
       "IPH": "Images/provider/airtelsm.jpg", 
       "MIL": 10, 
       "MXL": 10 
      }, 
      { 
       "OID": 4, 
       "OCD": "4", 
       "OPE": "BSNL", 
       "IPH": "Images/provider/bsnlsm.jpg", 
       "MIL": 10, 
       "MXL": 10 
      }, 
      { 
       "OID": 6, 
       "OCD": "5", 
       "OPE": "DOCOMO", 
       "IPH": "Images/provider/docomosm.jpg", 
       "MIL": 10, 
       "MXL": 10 
      }, 
      { 
       "OID": 7, 
       "OCD": "6", 
       "OPE": "IDEA", 
       "IPH": "Images/provider/ideasm.jpg", 
       "MIL": 10, 
       "MXL": 10 
      }, 
      { 
       "OID": 8, 
       "OCD": "7", 
       "OPE": "MTS", 
       "IPH": "Images/provider/mtssm.jpg", 
       "MIL": 10, 
       "MXL": 10 
      }, 
      { 
       "OID": 5, 
       "OCD": "8", 
       "OPE": "RELAINCE", 
       "IPH": "Images/provider/reliancesm.jpg", 
       "MIL": 10, 
       "MXL": 10 
      }, 
      { 
       "OID": 3, 
       "OCD": "9", 
       "OPE": "VODAFONE", 
       "IPH": "Images/provider/vodafonesm.jpg", 
       "MIL": 10, 
       "MXL": 10 
      } 
     ] 
} 
} 

から画像を読み取る際に問題がありますjsonのデータを保存し、arraylist.Inに私のコードで私はjsonのデータをフェッチし、arraylistに保存がnullを返します。私はこれを解決する方法がわかりません。私を助けてください。

+0

をあなたもdidntの中でそれを保存しようとあなたが持っていると仮定や文字列などのネットワーク要求から

String jsonString ="{\"DS\":...... "; try { ThirdPojo thirdPojo = objectMapper.readValue(jsonString, ThirdPojo.class); List<FirstPojo> list=thirdPojo.getlst.getlstList(); } catch (IOException e) { e.printStackTrace(); } 

をあなたのJSONを取得してみましょう配列リスト.. – ImAtWar

+0

ArrayList selectedNetwork = new ArrayList <>();それが動作すべきインスタンスであれば、それはローカル変数かインスタンスかです。それがローカルなのであれば、方法の面ではうまくいかないでしょう。 –

+0

@ ImAtWar私のコードを見てくださいselectedNetwork.add(spinnerData);選択されたネットワークはarraylistです –

答えて

0

あなたは変数を宣言していますjsonという名前を2回付けました。これはコンパイルすべきではありません。 tryブロックの前に宣言された変数を使いたいとします。

また、(すべてのキャッチブロックで)printStackTraceではなくLog.eを使用することをお勧めします。

JSONObject json = null; 
try { 
    json = new JSONObject(jsonStr); 
} catch (JSONException e1) { 
    Log.e("mytag", "Unable to parse json", e1"); 
} 

spinnerDataオブジェクトには別の問題があります。各レコードに対して新しいインスタンスを作成する必要があります。内部に値を作成しています。あなたはJSONObjectを使用して入札して各値を苦労していることをあなたはジャクソンが、それはここにはるかに良いのJavaのためのJSONライブラリで使用することができ、私が見

//Iterate the jsonArray and print the info of JSONObjects 
for(int i=0; i < jsonArray.length(); i++) { 
    JSONObject jsonObject = null; 
    SpinnerMenu spinnerData = new SpinnerMenu(); 
+1

スピナーデータオブジェクトは配列ループ内にある必要があります –

+0

@ cricket_007そうです、それは私が見なかったコードの別の問題です。 –

+0

@ cricket_007あなたの回答を投稿しますか? –

0

こんにちは男:ループに

SpinnerMenu spinnerData = new SpinnerMenu(); 

:この行を移動しますあなたが何をする必要があるか要約すると http://tutorials.jenkov.com/java-json/jackson-objectmapper.html

:あなたが開始するためのリンクです -Create POJOの それら-bindはJacksonMapper 例を使用しました: まずPOJO は、第二のPOJOはまずPOJOの

public class SecondPojo{ 
    @JsonProperty("LST") 
    private List<FirstPojo> lstList; 
//Getters and Setters 
} 

ので、第三POJOの物体が含まれています上のリストになりますたより

{ 
       "OID": 1, 
       "OCD": "1", 
       "OPE": "AIRCEL", 
       "IPH": "Images/provider/aircelsm.jpg", 
       "MIL": 10, 
       "MXL": 10 
      } 

public class FirstPojo{ 
@JsonProperty("OID") 
Integer oid; 
@JsonProperty("OCD") 
String ocd; 
@JsonProperty("OPE") 
String ope; 
@JsonProperty("IPH") 
String iph; 
@JsonProperty("MIL") 
Integer mil; 
@JsonProperty("MXL") 
Integer mxl; 
//Getters and Setters 
} 

になりますですプロパティ名がDS の2番目のPOJO次に、ジャクソンマッパーに電話し、セカンドクラスのゲッターを使用してリストを取得できますなどは: のは自分の時間がかかるし、発見ジャクソン図書館:)幸運

関連する問題