我的代码如下:
package com.example.test.center;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.os.Bundle;
import android.os.StrictMode;
import android.util.Log;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.Toast;
public class Posts extends Activity {
String type,firstname,lastname,email,number,username;
HttpClient httpclient;
HttpPost httppost;
ArrayList<NameValuePair> nameValuePairs;
HttpResponse response;
HttpEntity entity;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
Bundle gotBasket=getIntent().getExtras();
type=gotBasket.getString("type_post");
this.setTitle(type);
setContentView(R.layout.addpost);
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
httpclient = new DefaultHttpClient();
httpclient = new DefaultHttpClient();
httppost = new HttpPost("http://192.168.1.38/LTC/Uploadposts.php?type="+type+"");
try{
nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("type",type));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
response = httpclient.execute(httppost);
if(response.getStatusLine().getStatusCode()==200)
{
entity=response.getEntity();
if(entity !=null)
{
InputStream instream=entity.getContent();
JSONObject jsonResponse = new JSONObject(convertStreamToString(instream));
//Toast.makeText(getBaseContext(),jsonResponse.toString(),Toast.LENGTH_LONG).show();
String retUser=jsonResponse.getString("username");// username is the name of a column
String retcont=jsonResponse.getString("Content");
String getf=jsonResponse.getString("FirstN");
String getl=jsonResponse.getString("LastN");
String dop=jsonResponse.getString("Dateofp");
try {
JSONArray jArray = new JSONArray(jsonResponse.toString());
int jArrayLength = jArray.length();
List<String> listContents = new ArrayList<String>(jArrayLength);
for(int i =0; i<jArray.length(); i++){
JSONObject json_data = jArray.getJSONObject(i);
listContents.add(json_data.getString("username"));
}
ListView myListView = (ListView) findViewById(R.id.listView2);
myListView.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listContents));
}catch(JSONException e){
Log.e("log_tag","Error parsin data "+e.toString());
}
}}
}//End of first try
catch(Exception e)
{
Toast.makeText(getBaseContext(), e.toString(),Toast.LENGTH_LONG).show();
} // End of first catch
} //End of oncreate bundle
private static String convertStreamToString(InputStream is)
{
BufferedReader reader = new BufferedReader(new InputStreamReader(is));
StringBuilder sb = new StringBuilder();
String line = null;
try
{
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
}catch(IOException e)
{
e.printStackTrace();
}
finally
{
try{
is.close();
}catch(IOException e)
{
e.printStackTrace();
}
}return sb.toString();
}
} //End of Class
它没有正确读取json格式,我想取得我的php文件的结果(结果是json格式)并将其存储在json数组中,然后每次在“用户名”列中获取值并加载它在列表视图中。有什么帮助吗?
答案 0 :(得分:0)
对于上面的代码,使用[]包装你的json Response你得到一个JSonObject并且你试图将它解析为JSONARRAY ... 所以上面的代码可以将响应转换为
[{"username":"you","Dateofp":"2013-03-03","Content":"test1","IDpost:"1","LastN":" Yaghi","Type":"CARS","FirstN":"Mounzer"}]
或使用简单的JSON对象解析并在listContents中添加对象..删除与之相关的代码 JSONARRAY
CHange
{"IDpost":"1","username":"you","FirstN":"Mounzer","LastN":"Yaghi","Content":"test1","Type":"CARS","Dateofp":"2013-03-03"}{"IDpost":"2","username":"boss","FirstN":"Marwan","LastN":"Geha","Content":"test2\r\n","Type":"CARS","Dateofp":"2013-03-05"}
到
[{"IDpost":"1","username":"you","FirstN":"Mounzer","LastN":"Yaghi","Content":"test1","Type":"CARS","Dateofp":"2013-03-03"},{"IDpost":"2","username":"boss","FirstN":"Marwan","LastN":"Geha","Content":"test2\r\n","Type":"CARS","Dateofp":"2013-03-05"}]
注意两个对象之间添加了“[”“]”和“,”..
答案 1 :(得分:0)
你做不到:JSONArray jArray = new JSONArray(jsonResponse.toString());
jsonResponse包含JSONObject而不是JSONArray