gpt4 book ai didi

java - 如何在android中显示所有JSON值

转载 作者:行者123 更新时间:2023-11-28 23:26:58 25 4
gpt4 key购买 nike

我目前正在学习本教程 http://www.android-examples.com/android-json-parsing-retrieve-from-url-and-set-mysql-db-data/

它运行完美,但现在我想在 TextView 中显示所有 JSON 值。我是 JSON 的新手,在 android 方面只有一点经验。

这是我的 MainActivity.java。我从教程中修改了一下

public class MainActivity extends Activity {

TextView textview;
JSONObject json = null;
String str = "";
HttpResponse response;
Context context;
ProgressBar progressbar;
Button button;
JSONArray jArray;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

progressbar = (ProgressBar)findViewById(R.id.progressBar1);
textview = (TextView)findViewById(R.id.textView1);
button = (Button)findViewById(R.id.button1);

progressbar.setVisibility(View.GONE);

button.setOnClickListener(new View.OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

progressbar.setVisibility(View.VISIBLE);

new GetTextViewData(context).execute();

}
});
}

public static Map<String,String> parse(JSONObject json , Map<String,String> out) throws JSONException{
Iterator<String> keys = json.keys();
while(keys.hasNext()){
String key = keys.next();
String val = null;
try{
JSONObject value = json.getJSONObject(key);
parse(value,out);
}catch(Exception e){
val = json.getString(key);
}

if(val != null){
out.put(key,val);
}
}
return out;
}

private class GetTextViewData extends AsyncTask<Void, Void, Void>
{
public Context context;

public GetTextViewData(Context context)
{
this.context = context;
}

@Override
protected void onPreExecute()
{
super.onPreExecute();
}

@Override
protected Void doInBackground(Void... arg0)
{

HttpClient myClient = new DefaultHttpClient();
HttpPost myConnection = new HttpPost("http://192.168.1.9:80/test-androidex/send-data.php");

try {
response = myClient.execute(myConnection);
str = EntityUtils.toString(response.getEntity(), "UTF-8");

} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}


try{
JSONArray jArray = new JSONArray(str);
json = jArray.getJSONObject(0);

} catch ( JSONException e) {
e.printStackTrace();
}

catch (Exception e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
protected void onPostExecute(Void result)
{

try {
textview.setText(json.getString("name"));

} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

progressbar.setVisibility(View.GONE);

}
}

这是我的 JSON。和教程差很多

[{"id":"1","name":"white","status":"0"},{"id":"2","name":"red","status":"10"},{"id":"5","name":"blue","status":"15"}]

显然我的代码只显示名字“white”。我不明白如何迭代 JSONObject 来显示所有值。我尝试了其他问题的答案,但我无法将它们完全合并到我的代码中。

最佳答案

那是因为您只是从 JSONArray 获取第一个元素。 (索引 0)

您应该遍历 JSONArray 以获取数组中的所有 JSONObject

像这样,

JSONArray jArray = new JSONArray(str);
int total=jArray.length();
for(int i=0;i<total;i++) {
JSONObject json = jArray.getJSONObject(i); // Replace 0 with i'th index.
// use this json object to iterate over individual objects.
}

关于java - 如何在android中显示所有JSON值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38932367/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com