在Android中使用JSON解析网站中的数组
我想从下面给出的数据中解析一个特定的数组,特别是Solar:在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",
{
"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
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,然后迭代呢?