Ich bin neu in JSON und dieses Tutorial versucht: http://p-xr.com/android-tutorial-how-to-parse-read-json-data-into-a-android-listview/#commentsGet JSONArray ohne Array-Name?
Ich bin neu in JSON, C Sprachen, Java und auch Android, aber lerne. Das Tutorial verwendet, was ich ein benanntes Array nenne, aber alle JSON, die ich in meinem Android-Projekt verwenden werde, werden einfache Tabellenzeilen ohne benanntes Array verwenden. Beispiele für den JSON, den ich benutze, und das Erdbeben json aus dem Tutorial sind unten.
das Tutorial durchläuft die Erdbeben-Array und verwandelt sich in ein JAVA hashmap Liste mit dem folgenden Code:
JSONArray earthquakes = json.getJSONArray("earthquakes");
for(int i=0;i<earthquakes.length();i++){
HashMap<String, String> map = new HashMap<String, String>();
JSONObject e = earthquakes.getJSONObject(i);
map.put("id", String.valueOf(i));
map.put("name", "Earthquake name:" + e.getString("eqid"));
map.put("magnitude", "Magnitude: " + e.getString("magnitude"));
mylist.add(map);
}
Meine Frage ist, wie ich json.getJSONArray("")
verwenden können, wenn meine JSON wie unten gerade einfach ist? Ich kann den Rest des Codes konvertieren, ich muss nur wissen, wie dieser JSON mit dem getJSONArray("strJsonArrayName")
geladen wird, wenn ich kein strJsonArrayName
habe.
Mein JSON (unbenannt Array)
[
{
"cnt":1,
"name":"American",
"pk":7
},
{
"cnt":2,
"name":"Celebrities",
"pk":3
},
{
"cnt":1,
"name":"Female",
"pk":2
},
{
"cnt":1,
"name":"Language",
"pk":8
},
{
"cnt":1,
"name":"Male",
"pk":1
},
{
"cnt":1,
"name":"Region",
"pk":9
}
]
Tutorial JSON (Named Array)
{
"earthquakes":[
{
"eqid":"c0001xgp",
"magnitude":8.8,
"lng":142.369,
"src":"us",
"datetime":"2011-03-11 04:46:23",
"depth":24.4,
"lat":38.322
},
{
"eqid":"c000905e",
"magnitude":8.6,
"lng":93.0632,
"src":"us",
"datetime":"2012-04-11 06:38:37",
"depth":22.9,
"lat":2.311
},
{
"eqid":"2007hear",
"magnitude":8.4,
"lng":101.3815,
"src":"us",
"datetime":"2007-09-12 09:10:26",
"depth":30,
"lat":-4.5172
},
{
"eqid":"c00090da",
"magnitude":8.2,
"lng":92.4522,
"src":"us",
"datetime":"2012-04-11 08:43:09",
"depth":16.4,
"lat":0.7731
},
{
"eqid":"2007aqbk",
"magnitude":8,
"lng":156.9567,
"src":"us",
"datetime":"2007-04-01 18:39:56",
"depth":10,
"lat":-8.4528
},
{
"eqid":"2007hec6",
"magnitude":7.8,
"lng":100.9638,
"src":"us",
"datetime":"2007-09-12 21:49:01",
"depth":10,
"lat":-2.5265
},
{
"eqid":"a00043nx",
"magnitude":7.7,
"lng":100.1139,
"src":"us",
"datetime":"2010-10-25 12:42:22",
"depth":20.6,
"lat":-3.4841
},
{
"eqid":"2010utc5",
"magnitude":7.7,
"lng":97.1315,
"src":"us",
"datetime":"2010-04-06 20:15:02",
"depth":31,
"lat":2.3602
},
{
"eqid":"2009mebz",
"magnitude":7.6,
"lng":99.9606,
"src":"us",
"datetime":"2009-09-30 08:16:09",
"depth":80,
"lat":-0.7889
},
{
"eqid":"2009kdb2",
"magnitude":7.6,
"lng":92.9226,
"src":"us",
"datetime":"2009-08-10 17:55:39",
"depth":33.1,
"lat":14.0129
}
]
}
Im Tutorial basiert auf den Antworten von @ MДΓΓ БДLL und @Cody Caughlan, konnte ich um die JSONFunctions.getJSONFromURL in ein JSONArray anstelle eines JSONObject neu zu formatieren. Hier ist mein modifizierter Arbeitscode, danke!
public class JSONfunctions {
public static JSONArray getJSONfromURL(String url){
InputStream is = null;
String result = "";
JSONArray jArray = null;
HttpClient httpclient = new DefaultHttpClient();
HttpGet httpget = new HttpGet(url);
HttpResponse response = httpclient.execute(httpget);
HttpEntity entity = response.getEntity();
is = entity.getContent();
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();
jArray = new JSONArray(result);
return jArray;
}
}
OK, ich verstehe es. Ich konvertierte die getJSONObject Methode in eine getJSONArray Methode und änderte auch seine httpPost in eine httpGet und es funktioniert jetzt! Danke! – Ricky
einfach und nützlich ... danke !!! – dd619
Können Sie mir sagen, woran das Ergebnis angezeigt wird? JSONArray json = new JSONArray (result); – Sharath