2016-04-23 8 views
1

配列名なしでjson結果を解析しようとしています。私はdifferetメソッドを試してみましたが、これは私のコードです。 アレイ名を使わずにjsonの結果を解析する方法を教えてください。配列名なしのjson結果をandroidで解析する方法

ありがとうございました。

マイJSON

[{"id":"710","name":"app","address":"k","gender":"h"}] 

私はこのJSON

{"employees":[{"id":"710","name":"app","address":"k","gender":"h"}]} 

を解析しようとしている私はそれがこの

private class CheckList extends AsyncTask<String, String, JSONObject> { 

    private ProgressDialog mProgressDialog; 

    @Override 
    protected void onPreExecute() { 

     mProgressDialog = new ProgressDialog(Main2Activity.this); 
     // Set progressdialog title 
     mProgressDialog.setTitle("Please Wait"); 
     // Set progressdialog message 
     mProgressDialog.setMessage("Loading..."); 
     mProgressDialog.setIndeterminate(false); 
     // Show progressdialog 
     mProgressDialog.show(); 

     super.onPreExecute(); 

     Main2Activity.this.runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 


      } 
     }); 


    } 

    @Override 
    protected JSONObject doInBackground(String... args) { 
     final JParserAdv jParser = new JParserAdv(); 
     JSONObject json = jParser.makeHttpRequest("http://afkdemo.glabsapps.com/insertwebservice.asmx/getData?id=710", "GET", null); 
     return json; 

    } 

    @Override 
    protected void onPostExecute(JSONObject json) { 
     ArrayList<ITEM> data=new ArrayList<ITEM>(); 
     try { 
      //need to insert array name here but json result I'm using is without array name. 
      JSONArray arr = json.getJSONArray("arrayname"); 
      for(int i=0;i<arr.length();i++) { 
       ITEM d = new ITEM(); 
       d.item_rank = ((JSONObject) arr.get(i)).get("id").toString(); 
       d.item_name = ((JSONObject) arr.get(i)).get("name").toString(); 
       d.item_population = ((JSONObject) arr.get(i)).get("address").toString(); 
       data.add(d); 
      } 
      My_adapter adapter = new My_adapter(Main2Activity.this, data); 
      listView.setAdapter(adapter); 
      mProgressDialog.dismiss(); 
     }catch (Exception ex){ex.printStackTrace();} 

    } 

} 
+0

あなたが解析しようとしているサンプルJSONを投稿することができます。私たちがそれに答えることはより簡単になります。おかげさまで –

+0

[{"id": "710"、 "name": "app"、 "address": "k"、 "gender": "h"}]このJSONを解析しようとしています { : –

答えて

0

のようにそれはあなたが要求しているエンドポイントのように見える期待次のようなJSON構造体を返します。

[ 
    { 
    id: "710", 
    name: "app", 
    address: "k", 
    gender: "h" 
    } 
] 

ルート識別子を持っていないので、あなたのdoInBackground()方法でrootとして配列を返すしてみてください。

private class CheckList extends AsyncTask<String, String, JSONArray> { 

    ... 

    @Override 
    protected JSONArray doInBackground(String... args) { 
     final JParserAdv jParser = new JParserAdv(); 
     JSONArray json = jParser.makeHttpRequest("http://afkdemo.glabsapps.com/insertwebservice.asmx/getData?id=710", "GET", null); 
     return json; 
    } 

    @Override 
    protected void onPostExecute(JSONArray json) { 
     ... 
    } 
} 

私はJParseAdv APIがどのように見えるかわからないんだけど、うまくいけば、それはあなたのJSON構造のルートとして配列を返すために取得する方法があります。

+0

jsonのような方法はありません。{{"id": "710"、 "name": "app"、 "address": "k"、 "gender": "h"}}} .getAsJsonArray(コード内) –

+0

あなたがGSONライブラリを使っていると思っていました。私は私の答えを更新します。 – Ryan

+0

識別子なしで解析する方法はありますか –

0

まず、Employeesを配列に取得します。

次に、index = 0のオブジェクトを取得します。それはトリックを行う必要があります!

例えば:

JSONArray employees = json.optJSONArray("employees"); 
JSONObject anEmployee = employees.optJSONObject(0); 
+0

いいえ動作していません:( –

関連する問題