Java 为什么在解析json响应时看到最后一项?
我正在使用Json。我的json看起来像这样的结构 我使用asynctask解析我的json并在listview中显示它。我有一个问题信息jsonarray。我还解析了时间jsonobject,但在arraylist中只添加了最后一个对象。这是我的源代码Java 为什么在解析json响应时看到最后一项?,java,android,json,arrays,Java,Android,Json,Arrays,我正在使用Json。我的json看起来像这样的结构 我使用asynctask解析我的json并在listview中显示它。我有一个问题信息jsonarray。我还解析了时间jsonobject,但在arraylist中只添加了最后一个对象。这是我的源代码 private class CustomerStatistic extends AsyncTask<String, Void, String> { ProgressDialog pDialog; @Overri
private class CustomerStatistic extends AsyncTask<String, Void, String> {
ProgressDialog pDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(getActivity());
pDialog.setCancelable(false);
pDialog.show();
pDialog.setContentView(R.layout.custom_progressdialog);
}
@Override
protected String doInBackground(String... params) {
return Utils.getJSONString(params[0]);
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
try {
JSONArray mainJson = new JSONArray(result);
for (int i = 0; i < mainJson.length(); i++) {
JSONObject objJson = mainJson.getJSONObject(i);
objItem = new ServerItems();
objItem.setImage(imageurl + objJson.getString("ipone_4"));
objItem.setTitle(objJson.getString("title"));
objItem.setYoutube(objJson.getString("youtube"));
objItem.setWritten(objJson.getString("written"));
objItem.setCategory(objJson.getString("category"));
objItem.setDescraption(objJson.getString("descraption"));
objItem.setGeorgia_time(objJson.getString("georgia_time"));
objItem.setWold_time(objJson.getString("wold_time"));
objItem.setStars(objJson.getString("stars"));
objItem.setBlurimage(imageurl
+ objJson.getString("ipone_4_blur"));
JSONObject cinema = objJson.getJSONObject("Cinemas");
JSONArray cinemasarray = cinema.getJSONArray("Cinemaname");
for (int j = 0; j < cinemasarray.length(); j++) {
JSONObject objJson1 = cinemasarray.getJSONObject(j);
JSONArray info = objJson1.getJSONArray("info");
for (int k = 0; k < info.length(); k++) {
JSONObject information = info.getJSONObject(k);
objItem.setTime(information.getString("time"));
Log.e("time is", objItem.getTime());
}
}
arrayOfList.add(objItem);
}
} catch (JSONException e) {
e.printStackTrace();
}
if (pDialog != null) {
pDialog.dismiss();
pDialog = null;
}
setAdapterToListview();
}
}
私有类CustomerStatistic任务{
ProgressDialog;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
pDialog=newprogressdialog(getActivity());
pDialog.setCancelable(假);
pDialog.show();
pDialog.setContentView(R.layout.custom_progressdialog);
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
返回Utils.getJSONString(参数[0]);
}
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
试一试{
JSONArray mainJson=新JSONArray(结果);
for(int i=0;i
在listview的点击中,我替换了新的片段,并按位置放置了元素。我只有“时间”JSoObject有问题
这是我的listview的onclick java代码
main_listview.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
mPosition = position;
MoviewListResult newFragment = new MoviewListResult();
FragmentTransaction transaction = getFragmentManager()
.beginTransaction();
Bundle bundle = new Bundle();
bundle.putString("image", arrayOfList.get(position)
.getBlurimage());
bundle.putString("title", arrayOfList.get(position).getTitle());
bundle.putString("trailer", arrayOfList.get(position)
.getYoutube());
bundle.putString("category", arrayOfList.get(position)
.getCategory());
bundle.putString("writer", arrayOfList.get(position)
.getWritten());
bundle.putString("stars", arrayOfList.get(position).getStars());
bundle.putString("geotime", arrayOfList.get(position)
.getGeorgia_time());
bundle.putString("worldtime", arrayOfList.get(position)
.getWold_time());
bundle.putString("descraption", arrayOfList.get(position)
.getDescraption());
bundle.putString("time", arrayOfList.get(position).getTime());
newFragment.setArguments(bundle);
transaction.replace(R.id.content_frame, newFragment);
transaction.commit();
}
});
main_listview.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
位置=位置;
MoviewListResult newFragment=新的MoviewListResult();
FragmentTransaction事务=getFragmentManager()
.beginTransaction();
Bundle=新Bundle();
bundle.putString(“图像”,arrayOfList.get(位置)
.getBlurimage());
bundle.putString(“title”,arrayOfList.get(position.getTitle());
bundle.putString(“拖车”,arrayOfList.get(位置)
.getYoutube());
bundle.putString(“类别”,arrayOfList.get(位置)
.getCategory());
bundle.putString(“writer”,arrayOfList.get(位置)
.getWrite());
bundle.putString(“stars”,arrayOfList.get(position.getStars());
bundle.putString(“地理时间”,arrayOfList.get(位置)
.getGeorgia_time());
bundle.putString(“世界时间”,arrayOfList.get(位置)
.getWold_time());
bundle.putString(“描述”,arrayOfList.get(位置)
.getDescraption());
bundle.putString(“time”,arrayOfList.get(position.getTime());
setArguments(bundle);
事务.替换(R.id.content\u frame,newFragment);
commit();
}
});
我做错了什么?如果有人知道答案,请帮助我
附笔
我是新用户,无法发布图像,请查看我的Url。我上载了图像将此图像用作JSONParser:
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONException;
import org.json.JSONObject;
import android.util.Log;
public class JSONParser {
static InputStream is = null;
static JSONObject jObj = null;
static String json = "";
// constructor
public JSONParser() {
}
public JSONObject getJSONFromUrl(String url) {
// Making HTTP request
try {
// defaultHttpClient
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(url);
HttpResponse httpResponse = httpClient.execute(httpPost);
HttpEntity httpEntity = httpResponse.getEntity();
is = httpEntity.getContent();
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
try {
BufferedReader reader = new BufferedReader(new InputStreamReader(
is, "iso-8859-1"), 8);
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line + "n");
}
is.close();
json = sb.toString();
} catch (Exception e) {
Log.e("Buffer Error", "Error converting result " + e.toString());
}
// try parse the string to a JSON object
try {
jObj = new JSONObject(json);
} catch (JSONException e) {
Log.e("JSON Parser", "Error parsing data " + e.toString());
}
// return JSON String
return jObj;
}
}
下面是活动和异步任务的实现:
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import learn2crack.asynctask.library.JSONParser;
public class MainActivity extends Activity {
TextView uid;
TextView name1;
TextView email1;
Button Btngetdata;
//URL to get JSON Array
private static String url = "http://10.0.2.2/JSON/";
//JSON Node Names
private static final String TAG_USER = "user";
private static final String TAG_ID = "id";
private static final String TAG_NAME = "name";
private static final String TAG_EMAIL = "email";
JSONArray user = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Btngetdata = (Button)findViewById(R.id.getdata);
Btngetdata.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
new JSONParse().execute();
}
});
}
private class JSONParse extends AsyncTask<String, String, JSONObject> {
private ProgressDialog pDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
uid = (TextView)findViewById(R.id.uid);
name1 = (TextView)findViewById(R.id.name);
email1 = (TextView)findViewById(R.id.email);
pDialog = new ProgressDialog(MainActivity.this);
pDialog.setMessage("Getting Data ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(true);
pDialog.show();
}
@Override
protected JSONObject doInBackground(String... args) {
JSONParser jParser = new JSONParser();
// Getting JSON from URL
JSONObject json = jParser.getJSONFromUrl(url);
return json;
}
@Override
protected void onPostExecute(JSONObject json) {
pDialog.dismiss();
try {
// Getting JSON Array
user = json.getJSONArray(TAG_USER);
JSONObject c = user.getJSONObject(0);
// Storing JSON item in a Variable
String id = c.getString(TAG_ID);
String name = c.getString(TAG_NAME);
String email = c.getString(TAG_EMAIL);
//Set JSON Data in TextView
uid.setText(id);
name1.setText(name);
email1.setText(email);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
}
import org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入android.app.Activity;
导入android.app.ProgressDialog;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.Button;
导入android.widget.TextView;
导入learn2crack.asynctask.library.JSONParser;
公共类MainActivity扩展了活动{
文本视图uid;
文本视图名称1;
TextView email1;
按钮Btngetdata;
//获取JSON数组的URL
专用静态字符串url=”http://10.0.2.2/JSON/";
//JSON节点名称
私有静态最终字符串标记_USER=“USER”;
私有静态最终字符串标记\u ID=“ID”;
私有静态最终字符串标记_NAME=“NAME”;
私有静态最终字符串标记\u EMAIL=“EMAIL”;
JSONArray user=null;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Btngetdata=(按钮)findviewbyd(R.id.getdata);
Btngetdata.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
新建JSONParse().execute();