如何在我的JSON对象中获取相应的JSON值?
问题描述:
获取name
我的Toast
中的值onItemClick
我的ListView
我可以做,但是如何获得code
值?如何在我的JSON对象中获取相应的JSON值?
我有一个JSON数组,看起来像这样:
[
{
"code": "123",
"name": "Jim"
},
{
"code": "456",
"name": "Sally"
},
{
"code": "789",
"name": "Bob"
},
{
"code": "012",
"name": "Jill"
},
etc...
]
我得到的name
值在我ListView
这样的:
public void onStart(){
super.onStart();
// Create json array request
JsonArrayRequest jsonArrayRequest=new JsonArrayRequest(Request.Method.POST,
"http://www.nameofsite.com/nameoffile.php", (JSONArray)null, new Response.Listener<JSONArray>(){
public void onResponse(JSONArray jsonArray){
// Successfully download json
// So parse it and populate the listview
for(int i=0;i<jsonArray.length();i++){
try {
JSONObject jsonObject=jsonArray.getJSONObject(i);
items.add(jsonObject.getString("name"));
} catch (JSONException e) {
e.printStackTrace();
}
}
adapter.notifyDataSetChanged();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
Log.e("Error", "Unable to parse json array");
}
});
// Create request queue
RequestQueue requestQueue= Volley.newRequestQueue(this);
// add json array request to the request queue
requestQueue.add(jsonArrayRequest);
}
在
onItemClick
和name
Toast
这样的:
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
TextView myTextView = (TextView) view.findViewById(R.id.txt);
String text = myTextView.getText().toString();
Toast.makeText(getApplicationContext(),text, Toast.LENGTH_LONG).show();
}
});
但我想要toast
中的code
值,而不是name
。我该怎么做?
答
测试,但我想在敬酒的代码值,而不是名称
然后,你需要真正从JSON解析"code"
而不是只有"name"
,和将其添加到您的适配器。
例如,解析它
String code = jsonObject.getString("code");
String name = jsonObject.getString("name");
items.add(code + " " + name);
和吐司它
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
String[] parts = items.get(i).split(" ");
Toast.makeText(getApplicationContext(),parts[0], Toast.LENGTH_LONG).show();
}
});
答
试试这个。
json.getJSONObject("jsonData").getString("name");
+0
''jsonData“'从哪里来? –
答
你可以把名称值名称ArrayList和代码编写的ArrayList,在onItemclick你会使用这个位置,因为它具有相同的指数摆脱代码的ArrayList代码。或者你可以用HashMap的
检查异常,而你解析JSON。从代码它似乎是好的。 或添加日志以便更好地理解。 –