Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Android中使用JSON解析网站中的数组_Android_Arrays_Json - Fatal编程技术网

在Android中使用JSON解析网站中的数组

在Android中使用JSON解析网站中的数组,android,arrays,json,Android,Arrays,Json,我想从下面给出的数据中解析一个特定的数组,特别是Solar: { "Month": {"1":"January", "2":"February", "3":"March", "4":"April", "5":"May", "6":"June", "7":"July", "8":"August", "9":"September",

我想从下面给出的数据中解析一个特定的数组,特别是Solar:

{
  "Month":
        {"1":"January",
         "2":"February",
         "3":"March",
         "4":"April",
         "5":"May",
         "6":"June",
         "7":"July",
         "8":"August",
         "9":"September",
         "10":"October",
         "11":"November",
         "12":"December"},
  "Air":
        {"1":"26.6",
         "2":"26.9",
         "3":"27.2",
         "4":"27.6",
         "5":"27.6",
         "6":"27.1",
         "7":"26.7",
         "8":"26.5",
         "9":"26.5",
         "10":"26.8",
         "11":"26.7",
         "12":"26.4"},
  "Humid":
        {"1":"79.5%",
         "2":"75.6%",
         "3":"75.8%",
         "4":"75.9%",
         "5":"77.5%",
         "6":"78.2%",
         "7":"79.0%",
         "8":"81.5%",
         "9":"80.5%",
         "10":"77.2%",
         "11":"76.7%",
         "12":"79.7%"},
  "Solar":
        {"1":"5.87",
         "2":"6.51",
         "3":"6.77",
         "4":"6.42",
         "5":"5.51",
         "6":"4.86",
         "7":"4.95",
         "8":"5.09",
         "9":"5.92",
         "10":"6.22",
         "11":"6.12",
         "12":"5.82"},
  "Atm":
        {"1":"101.1",
         "2":"101.1",
         "3":"101.1",
         "4":"101.0",
         "5":"101.0",
         "6":"101.0",
         "7":"101.1",
         "8":"101.1",
         "9":"101.2",
         "10":"101.2",
         "11":"101.2",
         "12":"101.2"},
  "Wind":
        {"1":"3.7",
         "2":"3.9",
         "3":"3.0",
         "4":"2.9",
         "5":"3.7",
         "6":"4.0",
         "7":"3.5",
         "8":"3.7",
         "9":"3.0",
         "10":"3.7",
         "11":"3.9",
         "12":"3.4"},
  "Earth":
        {"1":"28.5",
         "2":"28.6",
         "3":"29.3",
         "4":"30.0",
         "5":"29.9",
         "6":"29.5",
         "7":"29.3",
         "8":"29.0",
         "9":"29.1",
         "10":"28.9",
         "11":"28.5",
         "12":"28.4"},
  "HDD":
        {"1":"0",
         "2":"0",
         "3":"0",
         "4":"0",
         "5":"0",
         "6":"0",
         "7":"0",
         "8":"0",
         "9":"0",
         "10":"0",
         "11":"0",
         "12":"0"},
  "CDD":
        {"1":"514",
         "2":"477",
         "3":"532",
         "4":"529",
         "5":"545",
         "6":"511",
         "7":"516",
         "8":"509",
         "9":"495",
         "10":"519",
         "11":"502",
         "12":"509"}
}
我试图通过不同的教程了解如何做到这一点,但我似乎无法继续。我只需要提取
JSONArray
并将其转换为
字符串
数组,然后将这些值存储到变量中。现在,我能够做到这一点:

public JSONObject solardata() throws ClientProtocolException, IOException, JSONException {
    StringBuilder sb = new StringBuilder(URL);
    HttpGet get = new HttpGet(sb.toString());
    HttpResponse r = client.execute(get);
    int status = r.getStatusLine().getStatusCode();
    if (status == 200) {
        HttpEntity e = r.getEntity();
这之后我该怎么办?如何获取
JSONArray

  • 谷歌是你的朋友。请先搜索再问。对“android httpget json”的简单搜索将提供大量示例。第一次击中,完全是你想要的
  • JSON中没有数组。它只是一个带有键和值的普通JSON对象

  • JSON数组应该是这样的-

    {
        results:[
            elem1,
            elem2,
            ...
        ]
    }
    
    JSONObject jsonObj = new JSONObject(jsonString);
    JSONArray jsonArray = jsonObj.getJSONArray("results");
    
    for(int i = 0; i < jsonArray.length(); i ++) {
        JSONObject obj = jsonArray.getJSONObject(i);
        // Do whatever you need with obj
    }
    
    因此,首先,您必须确保获得的JSON格式符合您的预期。一旦您有了一个带有有效JSON数组的
    字符串
    ,您就可以用类似这样的方法检索它-

    {
        results:[
            elem1,
            elem2,
            ...
        ]
    }
    
    JSONObject jsonObj = new JSONObject(jsonString);
    JSONArray jsonArray = jsonObj.getJSONArray("results");
    
    for(int i = 0; i < jsonArray.length(); i ++) {
        JSONObject obj = jsonArray.getJSONObject(i);
        // Do whatever you need with obj
    }
    
    JSONObject jsonObj=新的JSONObject(jsonString);
    JSONArray JSONArray=jsonObj.getJSONArray(“结果”);
    for(int i=0;i

    举个例子,你可以找到一大堆好的教程。

    你可以通过以下方式完成:

       try {
                    HttpClient httpclient = new DefaultHttpClient();
                    HttpGet httpget = new HttpGet(url);
                    HttpResponse response = httpclient.execute(httpget);
                    HttpEntity entity = response.getEntity();
                    is = entity.getContent();
                    statusCode = response.getStatusLine().getStatusCode();
    
                } catch (Exception e) {
                    statusCode = -1;
                    Log.e("log_tag", "Erro http " + e.toString());
                }
    if (statusCode == 200) {
    
                try {
                    BufferedReader reader = new BufferedReader(new InputStreamReader(is, "iso-8859-1"), 8);
                    StringBuilder sb = new StringBuilder();
                    String line = null;
                    while ((line = reader.readLine()) != null) {
                        sb.append(line + "\n");
                    }
                    is.close();
                    result = sb.toString();
                } catch (Exception e) {
                    Log.e("log_tag", "Erro conversão " + e.toString());
                }
    
                try {
                JSONObject json = new JSONObject(result);
                JSONArray monthsJSON = json.getJSONArray("Months");
                ArrayList<HashMap<String, String>> monthsList = new ArrayList<HashMap<String,String>>();
                for (int i = 0; i < monthsJSON.length(); i++) {
                    JSONObject object = (JSONObject) monthsJSON.get(i);
                    HashMap<String, String> data = new HashMap<String, String>();
                    String index = String.valueOf(i+1);
                    data.put(index, object.getString(index));
                    monthsList.add(data);
                }
    
            } catch (JSONException e) {
                    Log.e("log_tag", "Erro dados " + e.toString());
                }
            }
    
    试试看{
    HttpClient HttpClient=新的DefaultHttpClient();
    HttpGet HttpGet=新的HttpGet(url);
    HttpResponse response=httpclient.execute(httpget);
    HttpEntity=response.getEntity();
    is=entity.getContent();
    statusCode=response.getStatusLine().getStatusCode();
    }捕获(例外e){
    statusCode=-1;
    e(“Log_标记”,“Erro http”+e.toString());
    }
    如果(状态代码==200){
    试一试{
    BufferedReader reader=新的BufferedReader(新的InputStreamReader(is,“iso-8859-1”),8;
    StringBuilder sb=新的StringBuilder();
    字符串行=null;
    而((line=reader.readLine())!=null){
    sb.追加(第+行“\n”);
    }
    is.close();
    结果=sb.toString();
    }捕获(例外e){
    Log.e(“Log_标记”,“Erro conversão”+e.toString());
    }
    试一试{
    JSONObject json=新的JSONObject(结果);
    JSONArray monthsJSON=json.getJSONArray(“月”);
    ArrayList MonthList=新建ArrayList();
    for(int i=0;i
    这是我的简单JSON

    yourJson :
    [
     {"id":"1","name":"Jhohannes H Purba","address":"Kabanjahe"},
     {"id":"2","name":"Berkat Junaidi Banurea","address":"Sidikalang"},
     {"id":"3","name":"Totok BluesMan Silalahi","address":"Medan"}
    ]
    
    对于将字段插入数组,我使用

                JSONArray arrayJson = new JSONArray(yourJson);
    
                for (int i = 0; i < arrayLagu.length(); i++) {    
                    JSONObject jsonChildNode = arrayLagu.getJSONObject(i);
                    int id = jsonChildNode.optInt("id");
                    String name = jsonChildNode.optString("name");
                    String address = jsonChildNode.optString("address");
    
                    arrayId.add(i, id);
                    arrayJudul.add(i, name);
                    arrayLirik.add(i, address);
                }
    
    JSONArray arrayJson=新的JSONArray(yourJson);
    对于(int i=0;i
    那么,告诉我如何提取键“Solar”及其值?我已经学习了很多教程,但我总是陷入困境,因为我没有JSON的基本概念。如果有人能在这方面帮助我,我将非常感谢他/她。除了那个月不是一个数组。你必须把它作为一个JSONObject,然后迭代键。我知道Month不是一个数组,但是我怎么能把它作为一个JSONObject,然后迭代呢?