简体   繁体   English

如何在Android中读取JSON数组

[英]How to read json array in Android

I am facing here problem in reading a json array which is got from server : http://XXX.XXX.XXX.XXX:9090/appsapi/rest/services/getStudentPersonalDetails/123789 , this json array doesn't have json object in it. 我在读取从服务器获取的json数组时遇到问题: http : //XXX.XXX.XXX.XXX : 9090/appsapi/rest/services/getStudentPersonalDetails/123789 ,此json数组中没有json对象它。 It is like below.: 如下所示:

{"password":"raj","address":"dfsaf","state":"tamilnadu","image":"Bindu Appalam.jpg",
 "dept":"BE(Mech)","fname":"fasdf","mname":"saffd","dob":"14/12/1951","sex":"Male",
 "email":"fdasd@gmail.com","contact":"212121212545855555545","city":"dsfadf",
 "pin":"600106","sname":"fdjsf","studid":"123789"}

I want to parse it.. 我想解析它。

I have tried to get the json array like below from httpclient request : 我试图从httpclient请求中获取如下所示的json数组:

try {

            System.out.println("url tt : "+url);
            // http client
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpEntity httpEntity = null;
            HttpResponse httpResponse = null;

            System.out.println(" Urls Input to "+url);

            // Checking http request method type
            if (method == POST) {
                HttpPost httpPost = new HttpPost(url);
                // adding post params
                if (params != null) {
                    httpPost.setEntity(new UrlEncodedFormEntity(params));
                }

                httpResponse = httpClient.execute(httpPost);

            } else if (method == GET) {
                // appending params to url
                System.out.println(" Params Valyes "+params);

                if (params != null) {
                    String paramString = URLEncodedUtils.format(params, "utf-8");
                    url += "?" + paramString;
                    System.out.println(" Params String "+paramString);
                }
                HttpGet httpGet = new HttpGet(url);
                httpResponse = httpClient.execute(httpGet);
            }

            httpEntity = httpResponse.getEntity();
            response = EntityUtils.toString(httpEntity);

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

but got below error in response : 但响应以下错误:

05-20 16:38:25.420: I/System.out(29983):  
Output <!DOCTYPE html><html><head><title>Apache Tomcat/8.0.5 - Error report
</title><style type="text/css">H1 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:22px;} 
H2 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:16px;} 
H3 {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;font-size:14px;} 
BODY {font-family:Tahoma,Arial,sans-serif;color:black;background-color:white;} 
B {font-family:Tahoma,Arial,sans-serif;color:white;background-color:#525D76;} 
P {font-family:Tahoma,Arial,sans-serif;background:white;color:black;font-size:12px;}A {color : black;}A.name
 {color : black;}.line {height: 1px; background-color: #525D76; border: none;}</style> </head><body><h1>HTTP Status 404 - Not Found
</h1><div class="line"></div><p><b>type</b> Status report</p><p><b>message</b> <u>Not Found</u></p><p><b>description</b>
 <u>The requested resource is not available.</u></p><hr class="line"><h3>Apache Tomcat/8.0.5</h3></body></html>

any body , pls help here... 任何人,请在这里帮助...

In your code, there is no json array present, it is json object with name value pair data. 在您的代码中,不存在json数组,它是具有名称值对数据的json对象。 So you have to parse JSONObject not JSONArray . 因此,您必须解析JSONObject而不是JSONArray

Like: 喜欢:

JSONObject json = new JSONObject(jsonString);

String password = json.getString("password");

Similarly you can get all the values of the object. 同样,您可以获取对象的所有值。

A JSON Object starts with a { and ends with a } while a JSON Array starts with a [ and ends with a ]. JSON对象以{开头,以}结尾,而JSON数组以[开头,以]结尾。

In your case, change your code to have a JSONObject instead. 根据您的情况,将代码更改为具有JSONObject。

JSONObject json = new JSONObject(jsonString);
JSONArray jArray = json.getJSONArray("list");

System.out.println("*****JARRAY*****"+jArray.length());
for(int i=0;i<jArray.length();i++){


 JSONObject json_data = jArray.getJSONObject(i);
 Log.i("log_tag","_id"+json_data.getInt("account")+
  ", mall_name"+json_data.getString("name")+
  ", location"+json_data.getString("number")+
  ", telephone"+json_data.getString("url")+
  ",----"+json_data.getString("balance")+
  ",----"+json_data.getString("credit")+
  ",----"+json_data.getString("displayName")
 );

}

refer to: https://stackoverflow.com/a/4244963/2771869 请参阅: https : //stackoverflow.com/a/4244963/2771869

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM