2013-08-20 44 views
-1

我是相當新的android開發,我想創建一個android應用程序的貨幣轉換。我需要閱讀JSON網址來獲得費率。我得到AMOUNT,CURRENCYFROM和CURRENCYTO的用戶輸入。我試圖讀取的網址如下:http://rate-exchange.appspot.com/currency?from=USD&to=EUR&q=1如何閱讀android開發的JSON網址?

一旦url讀取我想將值分配給變量。具體而言,我試圖通過AMOUNT的用戶輸入來獲得費率和乘數。

我想獲得字典(我認爲JSON文件有字典)的值和鍵,並將其轉換爲數據類型變量,如int或字符串。任何幫助,將不勝感激。由於

+0

有很多很多關於提取和解析JSON飼料的教程,你有問題之前嘗試搜索? – Egor

+0

我做過研究,但在任何網站上都沒有發現任何有用的和可理解的東西。 –

回答

1

您可以使用此代碼:

public API_Rate_Model getRate() { 
API_Rate_Model result = new API_Rate_Model(); 
try { 
       HttpResponse response; 
       HttpClient myClient = new DefaultHttpClient(); 
       HttpPost myConnection = new HttpPost("http://rate-exchange.appspot.com/currency?from=USD&to=EUR&q=1"); 
       try { 
        response = myClient.execute(myConnection); 
        String JSONString = EntityUtils.toString(response.getEntity(), 
          "UTF-8"); 
        Log.i(BaseID.TAG, JSONString); 

       JSONObject json = null; 
       json = new JSONObject(JSONString); 
          result.setTo(json.getString("to")); 
          result.setRate(json.getDouble("rate")); 
          result.setFrom(json.getString("from")); 
          result.setValue(json.getDouble("v")); 

      } catch (ClientProtocolException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 


    return result; 
} 

API_Rate_Model類:

public class API_Rate_Model { 

    private String to; 
    private Double rate; 
    private String from; 
    private Double value; 

    public API_001_Model() { 
     to = ""; 
     rate = 0.0; 
     from = ""; 
     value = 0.0; 
    } 

    public Double getRate() { 
     return rate; 
    } 

    public void setRate(Double rate) { 
     this.rate = rate; 
    }  

    public int getValue() { 
     return value; 
    } 

    public void setValue(Double value) { 
     this.value = value; 
    } 

    public String getFrom() { 
     return from; 
    } 

    public void setFrom(String from) { 
     this.from = from; 
    } 

    public String getTo() { 
     return to; 
    } 

    public void setTo(String to) { 
     this.to= to; 
    } 
} 

這個代碼將發過帖子到服務器,然後轉換爲字符串的響應然後處理JSON字符串的響應。我希望我的回答可以幫助你,但如果你有任何問題隨時問在評論:)

+0

我如何才能從嘗試中獲得收益? –

+0

第一個選項只是簡單地在try catch之外創建變量,第二個選項創建一個類模型,然後從該模型創建一個對象,然後將該值插入到該對象並將我的代碼插入到返回該模型的函數中,您是否理解我意思? –

+0

我得到第一個選項,但是當我設置外部變量時,它們會在try catch內部發生變化,但在try catch之後,當我使用這些變量時,它們與try catch內部不同。起初我將比率設置爲0,然後在裏面試着抓住我把它設置成等於JSOn文件的比率,並且在try catch之外我用AMOUNT乘以比率,我得到0,你會得到我說的。 –