2016-04-23 133 views
1

我想解析json结果没有数组名称。我尝试了不同的方法,但它不起作用这些都是我的代码。 所以请有人告诉我如何解析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 {“employees” :[{“id”:“710”,“name”:“app”,“address”:“k”,“gender”:“h”}]} 我希望它像这样 –

回答

0

它看起来像您所请求的端点返回一个如下所示的JSON结构:

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

由于根不具有标识符,尝试在doInBackground()方法返回一个数组为根。

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 .getAsJsonArray在我的代码中 –

+0

糟糕。我以为你在使用GSON库。我会更新我的答案。 – Ryan

+0

是否有任何其他方式解析没有标识符 –

0

首先让Employees进入数组。

然后获取索引= 0的对象。这应该够了吧!

E.g:

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

不,它不工作:( –