2013-01-03 99 views
0

我遇到了这个麻烦?如何提取json数据?

[ 
{ 
    "username": "apap", 
    "status": "", 
    "log": "", 
    "email": "[email protected]", 
    "lat": "", 
    "dob": "5-11-1986" 
}, 
{ 
    "username": "apapp", 
    "status": "", 
    "log": "", 
    "email": "[email protected]", 
    "lat": "", 
    "dob": "5-11-1986" 
} 
], 
"returncode": "0" 
} 

错误解析数据org.json.JSONException:值{ “切圆”:在型org.json.JSONObject的响应不能被转换到JSONArray

对于提取切圆阵列值,我写下面的代码:

public class MainActivity extends Activity { 
TextView username; 
TextView email; 
TextView dob; 
TextView lat; 
TextView log; 
ListView listView; 
ArrayList<HashMap<String,String>> jsonlist; 
JsonAdapter objAdapter; 
Context ctx; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    listView = (ListView) findViewById(R.id.listView); 
    jsonlist = new ArrayList<HashMap<String,String>>(); 
    JSONObject json = JSONfunctions 
      .getJSONfromURL("http://www.railsboxtech.com/flirtalert/alluser.php"); 

    try { 

     JSONArray flirt = json.getJSONArray("response"); 
     Toast.makeText(MainActivity.this, "namr", Toast.LENGTH_LONG).show(); 
     for (int i = 0; i < flirt.length(); i++) { 

      JSONObject ei = flirt.getJSONObject(i); 
      JSONArray eie = ei.getJSONArray("incircle"); 
      for (int j = 0; j < eie.length(); j++) { 
       JSONObject e = eie.getJSONObject(j); 
       HashMap<String, String> map = new HashMap<String, String>(); 
       map.put("User",e.getString("username")); 
       map.put("Email",e.getString("email")); 
       map.put("dob",e.getString("dob")); 
       map.put("lat",e.getString("lat")); 
       map.put("log",e.getString("log")); 
       jsonlist.add(map); 

      } 

     } 
    } catch (JSONException e) { 
     Log.e("log_tag", "Error parsing data " + e.toString()); 
    } 
    ListAdapter adapter = new SimpleAdapter(this, jsonlist, R.layout.user_list, 
      new String[] { "User", "Email","dob","lat","log"}, new int[] { 
        R.id.username, R.id.email, R.id.dob, R.id.lat, R.id.log}); 
    listView.setAdapter(adapter); 
    listView.setTextFilterEnabled(true); 

} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

}

+0

后完整的错误日志。 –

+0

plz发布有效的json,因为当前的json字符串无效 –

+0

** ei **是什么? –

回答

1

当您检索数组中的元素与这一行

JSONArray ja1= eie.getJSONArray(j); 

您需要的元素是数组的themselfs,但是,在你输入的元素都是对象。

由于输入只有一个数组,但你的代码假设了两个嵌套的数组,你可能想是这样的:

JSONObject json = JSONfunctions 
     .getJSONfromURL("http://www.railsboxtech.com/flirtalert/alluser.php"); 

try { 
    JSONObject ei = json.getJSONObject("response"); 
    JSONArray eie = ei.getJSONArray("incircle"); 
    for (int j = 0; j < eie.length(); j++) { 
     JSONObject e = eie.getJSONObject(j); 
     HashMap<String, String> map = new HashMap<String, String>(); 
     map.put("User",e.getString("username")); 
     map.put("Email",e.getString("email")); 
     map.put("dob",e.getString("dob")); 
     map.put("lat",e.getString("lat")); 
     map.put("log",e.getString("log")); 
     jsonlist.add(map); 
    } 
} catch ...   
+0

所以,我现在需要做的是我是Android的初学者...可以请你简要说明 – TheLittleNaruto

+0

回答更新了示例实现 – Henry

+0

还是有同样的错误 – TheLittleNaruto