我试图从String构建器解析json,但它给了nothings。这是我的代码
private class GetClass extends AsyncTask<String, Void, Void> {
private final Context context;
public GetClass(Context c){
this.context = c;
}
protected void onPreExecute(){
progress= new ProgressDialog(this.context);
progress.setMessage("Loading");
progress.show();
}
@Override
protected Void doInBackground(String... params) {
try {
final TextView outputView = (TextView) findViewById(R.id.showOutput);
URL url = new URL("my_url");
HttpURLConnection connection (HttpURLConnection)url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("USER-AGENT", "Mozilla/5.0");
connection.setRequestProperty("ACCEPT-LANGUAGE", "en-US,en;0.5");
int responseCode = connection.getResponseCode();
//System.out.println("\nSending 'POST' request to URL : " + url);
//System.out.println("Post parameters : " + urlParameters);
//System.out.println("Response Code : " + responseCode);
final StringBuilder output = new StringBuilder();
//output.append(System.getProperty("line.separator") + "Request Parameters " + urlParameters);
//output.append(System.getProperty("line.separator") + "Response Code " + responseCode);
//output.append(System.getProperty("line.separator") + "Type " + "GET");
BufferedReader br = new BufferedReader(new InputStreamReader(connection.getInputStream()));
String line = "";
StringBuilder responseOutput = new StringBuilder();
//System.out.println("output===============" + br);
while((line = br.readLine()) != null ) {
responseOutput.append(line);
}
br.close();
output.append(responseOutput.toString());
UsersActivity.this.runOnUiThread(new Runnable() {
@Override
public void run() {
try {
JSONObject mainObject = new JSONObject(output.toString());
JSONObject id = mainObject.getJSONObject("id");
} catch (JSONException e) {
e.printStackTrace();
}
outputView.setText(output);
progress.dismiss();
}
});
} catch (MalformedURLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
// protected void onPostExecute() {
// progress.dismiss();
// }
}
============================================== < / p>
[{&#34; ID&#34:4,&#34;名称&#34;:&#34;测试&#34;&#34;电子邮件&#34;:&#34;测试@测试.COM&#34;&#34;批&#34;:1,&#34;管理&#34;:0,&#34;负责&#34;:&#34;测试&#34;&#34;标志&#34;:&#34;&#34;&#34;总统&#34;:&#34;测试&#34;&#34;会员&#34; 50&#34;任务&#34 ;:&#34;测试&#34;&#34;地址&#34;:&#34;我&#39;米 测试 ADRESS&#34;&#34;电话&#34;:&#34; 12345678&#34;&#34;网站&#34;:&#34; HTTP://test.com",&#34 ; Facebook和#34;:&#34; HTTP://facebook.com/test",&#34; created_at&#34;:&#34; 2016年3月17日 11:45:03&#34;&#34;的updated_at&#34;:&#34; 2016年3月22日 19:47:47&#34;},{&#34; ID&#34;:5,&#34;名称&#34;:&#34;测试&#34;&#34;电子邮件&#34;:& #34; contact@test.tn",&#34;批&#34;:1,&#34;管理&#34;:1,&#34;负责&#34;:&#34;&#34 ;,&#34;标志&#34;:无效,&#34;总统&#34;:无效,&#34;成员&#34;:无效,&#34;任务&#34;:无效,&#34;地址&#34;:无效,&#34;电话&#34;:无效,&#34;网站&#34;:无效,&#34;的Facebook&#34;:无效,&#34; created_at&#34;:& #34; 2016年3月19日 08:24:50&#34;&#34;的updated_at&#34;:&#34; 2016年3月22日 19:48:25&#34;},{&#34; ID&#34;:7,&#34;名称&#34;:&#34;测试&#34;&#34;电子邮件&#34;:& #34; test@test.tn",&#34;批&#34;:1,&#34;管理&#34;:0,&#34;负责&#34;:&#34;&#34 ;,&#34;标志&#34;:无效,&#34;总统&#34;:无效,&#34;成员&#34;:无效,&#34;任务&#34;:无效,&#34;地址&#34;:无效,&#34;电话&#34;:无效,&#34;网站&#34;:无效,&#34;的Facebook&#34;:无效,&#34; created_at&#34;:& #34; 2016年3月19日 11:30:07&#34;&#34;的updated_at&#34;:&#34; 2016年3月22日 19:46:10&#34;},{&#34; ID&#34;:11,&#34;名称&#34;:&#34;测试&#34;&#34;电子邮件&#34;:& #34; test@gmail.com",&#34;批&#34;:1,&#34;管理&#34;:0,&#34;负责&#34;:&#34;&#34 ;,&#34;标志&#34;:无效,&#34;总统&#34;:无效,&#34;成员&#34;:无效,&#34;任务&#34;:无效,&#34;地址&#34;:无效,&#34;电话&#34;:无效,&#34;网站&#34;:无效,&#34;的Facebook&#34;:无效,&#34; created_at&#34;:& #34; 2016年3月21日 15:52:18&#34;,&#34; updated_at&#34;:&#34; 2016-03-23 09:57:55&#34;}]
答案 0 :(得分:1)
JSON回复是JSONArray
,而不是JSONObject
。
这样做,
JSONArray mainObject = new JSONArray(output.toString());
for (int i = 0; i < mainObject.length(); i++) {
JSONObject object = mainObject.getJSONObject(i);
int id = object.getInt("id"); //This will have the value of the id
}
答案 1 :(得分:0)
你要做的第一件事就是getJSONArray,因为你展示的结果有一个数组作为根元素,而不是一个JSONObject。然后,您需要遍历数组并获取每个JSONObject:
JSONArray values= new JSONArray(output.toString());
for (int i = 0; i < values.size(); i++) {
JSONObject mainObject= values.getJSONObject(i);
int id = mainObject.getInt("id");
}