我从我的API获得了以下JSON数据:
Json数组和其中的很多json对象。
如何获取没有名称的json数组?
这就是我的尝试:
//Parsing the fetched Json String to JSON Object
j = new JSONObject(response);
result = j.getJSONArray('');
for(int i=0;i<j.length();i++){
try {
//Getting json object
JSONObject json = j.getJSONObject(i);
Log.d("tag", "NAME IS: " +json.getString("name"));
}
}
json
变量存储所有json数据!
答案 0 :(得分:2)
JSONArray有一个构造函数,它接受一个String源。
JSONArray array = new JSONArray(yourJSONArrayAsString);
然后你可以使用for循环来获取每个对象。
JSONArray array;
try {
array = new JSONArray(yourJSONArrayAsString);
for(int i=0;i<array.length();i++){
JSONObject obj = array.getJSONObject(i);
// get your data from jsonobject
}
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
答案 1 :(得分:-1)
创建包含json解析代码的JSONParser类。
在您的MainActivity.java中提及
JSONParser jsonparser = new JSONParser(); JSONObject jsonObject = jsonparser.getJSONFromURL(URL);
现在创建单独的JSONParser类
class JSONParser
{
public static JSONObject jsonObject=null;
public static String json=null;
InputStream is=null;
public JSONObject getJSONFromURL(String url)
{
try
{
HttpClient client=new DefaultHttpClient();
HttpPost post=new HttpPost(url);
HttpResponse response=client.execute(post);
HttpEntity entity=response.getEntity();
is=entity.getContent();
}
catch(Exception e)
{
e.printStackTrace();
}
try
{
BufferedReader br=new BufferedReader(new InputStreamReader(is,"UTF-8"));
StringBuilder sb=-new StringBuilder();
String line=null;
while((br.readLine())!=null)
{
sb.append(line+"\n");
}
json=sb.toString();
is.close();
}
catch(Exception e)
{
e.printStackTrace();
}
try
{
jsonObject=new JSONObject(json.subString(json.indexOf("{"),json.lastinddexOf("}")+1));
}
catch(Exception e)
{
e.printStackTrace();
}
return jsonObject;
}
现在在MainActivity.java
try
{
JSONParser jsonparser=new JSONParser();
JSONObject jsonObject=jsonparser.getJSONFromURL(URL);// URL is a String which contains url
Log.d("Response:",jsonObject.toString());
JSONArray jsonarray=new JSONArray(jsonObject.getString("YourFirstJSONArrayName"));//YourJSONArray contains the response array
for(int i=0;i<jsonarray.length();i++)
{
JSONObject c=jsonarray.getJSONObject(i);
// now get data from c object
}
// Now getting data from Second Array
JSONArray jsona=new JSONArray(jsonObject.getString("YourSecondJSONArrayName"));
for(int j=0;j<jsona.length();j++)
{
JSONObject c=jsona.getJSONObject(j);
// now get data from json data from second array
}
}
catch(Exception e)
{
e.printStackTrace();
}