2015-10-05 139 views
0

我正在扫描一个条形码,它从条形码api返回Json格式的结果。android从Json对象中获取值

扫描方法正在返回一个条形码号码,它使用Volley请求来获取适当的项目Json数据。这似乎正常工作,因为在jsonObject的结果是:

{"valid":"true", 
"number":"021500058506", 
"itemname":"Lawry's Garlic Salt Coarse Ground W\/Parsley", 
"alias":"", 
"description":"", 
"avg_price":"", 
"rate_up":0, 
"rate_down":0} 

问题在于提取“itemname”的值。使用下面的代码,我得到了一个String textResult的空结果。

public void findProduct(){ 

    final JsonObjectRequest jsObjRequest = new JsonObjectRequest 
     (Request.Method.GET, getUrl(), null, new Response.Listener<JSONObject>() { 

      @Override 
      public void onResponse(JSONObject response) { 
       String textResult = ""; 
       try { 
        JSONObject productItem = response.getJSONObject(""); 

        textResult = productItem.getString("itemname"); 

        } catch (JSONException e1) { 
        e1.printStackTrace(); 
       } 
       contentTxt.setText(textResult); 

       Toast toast = Toast.makeText(getApplicationContext(), 
         "Text Result" + textResult, Toast.LENGTH_LONG); 
       toast.show(); 
      } 

     }, new Response.ErrorListener() { 

      @Override 
      public void onErrorResponse(VolleyError error) { 
       if(error != null) Log.e("MainActivity", error.getMessage()); 

      } 
     }); 

    VolleyHelper.getInstance(getApplicationContext()).addToRequestQueue(jsObjRequest); 
} 

知道为什么:

textResult = productItem.getString("itemname"); 

是不是给我的 “ITEMNAME” 的价值?

感谢

+1

'的JSONObject productItem = response.getJSONObject( “”);'是我想这个问题。 productItem是否正确填充? – eyeballz

+0

您是否收到错误讯息?如果是的话,也把这个问题。 – eyeballz

+0

@ eyeballz - 是的,我知道回复是上面文本中的jsonobject。该对象通过getJSONObject(“”)来确定,因为它是没有名称的单个项目。至少这就是我的想法。尽管我通常会陷入困境。 – bkane56

回答

0

这条线:

JSONObject productItem = response.getJSONObject(""); 

需:

JSONObject productItem = new JSONObject(YOUR_JSON_STRING);