0
{
   "transport" : {
   "public" : [
     {
    "transport_id" : "2",
    "transport_name" : "Ferry"
 },
 {
    "transport_id" : "3",
    "transport_name" : "Bus"
 },
 {
    "transport_id" : "4",
    "transport_name" : "Taxi"
 },
 {
    "transport_id" : "5",
    "transport_name" : "Tram"
 }
],
   "Private" : [
 {
    "transport_id" : "11",
    "transport_name" : "Bicycle"
 },
 {
    "transport_id" : "12",
    "transport_name" : "Private Car"
 }
],
  "Misc" : [
 {
    "transport_id" : "6",
    "transport_name" : "By Foot"
 },
 {
    "transport_id" : "7",
    "transport_name" : "Helicopter"
 },
 {
    "transport_id" : "8",
    "transport_name" : "Yatch"
 }
 ]
  }
}  

私はもともと上記のJSONを「ListView」に抽出するiOSアプリを開発していましたが、今はAndroidでそれを行おうとしています。どうすれば、上記のJSONをセクション化されたリストビューに変換できるのでしょうか。

配列"KEY"(つまり、上記の例では "public"、 "private" ... etc)は不明であり、動的に生成され、配列の量も不明であると考えてください。

どうもありがとう。

4

1 に答える 1

1

組み込みのorg.Jsonパッケージは次のように使用できます。

String jsonString = "{
                    'transport' : {
                       'public' : [ ..."
JSONObject jsonO = new JSONObject(jsonString);
for (String key: jsonO.keys()){
    Object o = jsonO.get(key)
    if (o instanceof JSONArray){
        JSONArray jsonA = (JSONArray)o;
        int muberOfItems = jsonA.length();
        for(int i = 0; i<numberOfItems; i++){
            JSONObject jsonO2 = jsonA.optJSONObject(i)
            if (jsonO2 == null) // continue ? 
            //this object should contain your transportId and transportName
            String transportId = jsonO2.getString(0);
            String transportName = jsonO2.getString(1);
            //parse your Data, you have anything you need (private public etc == key)
            //whichValue = i
        }
    } else { //must be some other value }

}

JsonObjectsには他の便利なメソッドが含まれており、ObjectのようなHashMapと見なすことができます。

于 2012-06-04T12:23:45.367 に答える