2017-10-13 86 views
-3

我已經理解如何獲取JSON數組。但我不知道如何到達這裏是JSON文件的鏈接。 https://www.cryptocompare.com/api/data/coinlist如何從沒有JSON數組的複雜JSON對象獲取字符串

{ 
"Response": "Success", 
"Message": "Coin list succesfully returned!", 
"BaseImageUrl": "https://www.cryptocompare.com", 
"BaseLinkUrl": "https://www.cryptocompare.com", 
"DefaultWatchlist": { 
    "CoinIs": "1182,7605,5038,24854,3807,3808,202330,5324,5031,178978", 
    "Sponsored": "1182" 
}, 
"Data": { 
    "USC": { 
     "Id": "100954", 
     "Url": "/coins/usc/overview", 
     "ImageUrl": "/media/1383363/usc.png", 
     "Name": "USC", 
     "Symbol": "USC", 
     "CoinName": "Ultimate Secure Cash", 
     "FullName": "Ultimate Secure Cash (USC)", 
     "Algorithm": "SHA256", 
     "ProofType": "PoS", 
     "FullyPremined": "0", 
     "TotalCoinSupply": "200084200", 
     "PreMinedValue": "N/A", 
     "TotalCoinsFreeFloat": "N/A", 
     "SortOrder": "1233", 
     "Sponsored": false 
    }, 
    "DUX": { 
     "Id": "105206", 
     "Url": "/coins/dux/overview", 
     "ImageUrl": "/media/1383364/dux.png", 
     "Name": "DUX", 
     "Symbol": "DUX", 
     "CoinName": "DuxCoin", 
     "FullName": "DuxCoin (DUX)", 
     "Algorithm": "Scrypt", 
     "ProofType": "PoW/PoS", 
     "FullyPremined": "0", 
     "TotalCoinSupply": "1680000000", 
     "PreMinedValue": "N/A", 
     "TotalCoinsFreeFloat": "N/A", 
     "SortOrder": "1234", 
     "Sponsored": false 
    }, 
    "XPS": { 
     "Id": "105220", 
     "Url": "/coins/xps/overview", 
     "ImageUrl": "/media/1383365/xps.png", 
     "Name": "XPS", 
     "Symbol": "XPS", 
     "CoinName": "PoisonIvyCoin", 
     "FullName": "PoisonIvyCoin (XPS)", 
     "Algorithm": "Scrypt", 
     "ProofType": "PoW/PoS", 
     "FullyPremined": "0", 
     "TotalCoinSupply": "4666666667", 
     "PreMinedValue": "N/A", 
     "TotalCoinsFreeFloat": "N/A", 
     "SortOrder": "1235", 
     "Sponsored": false 
    }, 
    "EQT": { 
     "Id": "105263", 
     "Url": "/coins/eqt/overview", 
     "ImageUrl": "/media/1383366/eqt.png", 
     "Name": "EQT", 
     "Symbol": "EQT", 
     "CoinName": "EquiTrader", 
     "FullName": "EquiTrader (EQT)", 
     "Algorithm": "Scrypt", 
     "ProofType": "PoW", 
     "FullyPremined": "0", 
     "TotalCoinSupply": "72000000", 
     "PreMinedValue": "N/A", 
     "TotalCoinsFreeFloat": "N/A", 
     "SortOrder": "1236", 
     "Sponsored": false 
    }, 
    "INSN": { 
     "Id": "105284", 
     "Url": "/coins/insn/overview", 
     "ImageUrl": "/media/1383366/insn.png", 
     "Name": "INSN", 
     "Symbol": "INSN", 
     "CoinName": "Insane Coin", 
     "FullName": "Insane Coin (INSN)", 
     "Algorithm": "X11", 
     "ProofType": "PoW/PoS", 
     "FullyPremined": "0", 
     "TotalCoinSupply": "30000000", 
     "PreMinedValue": "N/A", 
     "TotalCoinsFreeFloat": "N/A", 
     "SortOrder": "1237", 
     "Sponsored": false 
    } 
}, 
"Type": 100 
} 

符號全名CoinName這是我的代碼

try { 
      // Hashmap for ListView 
      ArrayList<HashMap<String, String>> PriceList = new ArrayList<HashMap<String, String>>(); 

      JSONObject jsonObj = new JSONObject(json); 





      JSONObject mJ = jsonObj.getJSONObject("Response"); 




      for (int i = 0; i < json.length(); i++) { 
       JSONObject c = mJ.getJSONObject("Data"); 

       String symbol = c.getString("Symbol"); 
       String fName = c.getString("FullName"); 
       String cName = c.getString("CoinName"); 


       // tmp hashmap for single data 
       HashMap<String, String> data = new HashMap<>(); 

       // adding each child node to HashMap key => value 
       data.put("Symbol",symbol); 
       data.put("FullName",fName); 
       data.put("CoinName",cName); 

       // adding data to listView 
       PriceList.add(data); 
      } 
      return PriceList; 
     } catch (JSONException e) { 
      e.printStackTrace(); 
      return null; 
     } 
    } else { 
     Log.e("ServiceHandler", "Couldn't get any data from the url"); 
     return null; 
    } 
+0

使用這生成JSON模型類:http://www.jsonschema2pojo.org/ –

+0

看看這個問題:https://stackoverflow.com/questions/37231894/using-gson-and -retrofit-2-to-deserialize-complex-api-responses https://stackoverflow.com/questions/36420571/deserialze-json-with-a-wrapper-keyword-with-gson – cRobot

回答

0

JSON應該有JSONArray但你可以使用iterator這一點。

try 
{ 
    String jsonString=""; //Use your JSON string/response here. 
    JSONObject jObject= new JSONObject(jsonString).getJSONObject("Data"); 
    Iterator<String> keys = jObject.keys(); 
    while(keys.hasNext()) 
    { 
     String key = keys.next(); 

     JSONObject innerJObject = jObject.getJSONObject(key); 

    } 
} 
catch (JSONException e) 
{ e.printStackTrace(); } 
+0

它與空指針異常崩潰' int java.util.Lizst.size()' – emeUshiwu