2013-03-25 94 views
0
呼籲不斷

我想在我的應用程序解析JSON:錯誤在Java中

所以首先我創建不變類我的Android應用程序,這對的app.config約6個變量:

(類別:1)

public class Constants{ 

    // url to make request 
    public static String url = "http://server.com/"; 

    // JSON Node names 
    public static final String TAG_CONTACTS = "contacts"; 
    public static final String TAG_ID = "id"; 
    public static final String TAG_NAME = "name"; 
    public static final String TAG_EMAIL = "email"; 
    public static final String TAG_ADDRESS = "address"; 
    public static final String TAG_GENDER = "gender"; 

} 

現在我想,所以我說幹就幹,創建了不同的類中使用此不同的等級:

(等級:2)

public class ReadFiles{ 

     public void readConstant(){ 
     //appConfig is JSONArray 
     JSONArray appConfig = null; 
     // Creating JSON Parser instance 
     JSONParser jParser = new JSONParser(); 


     // getting JSON string from URL 
     JSONObject json = jParser.getJSONFromUrl(c.url); 

     try { 
      // Getting Array of Contacts 
      contacts = json.getJSONArray(Constants.TAG_CONTACTS); 

      // looping through All Contacts 
      for(int i = 0; i < contacts.length(); i++){ 
       JSONObject d = details.getJSONObject(i); 

       // Storing each json item in variable 
       String id = d.getString(Constants.TAG_ID); //Error: 
     //ERROR : The method getString(int) in the type JSONArray is not applicable for the arguments-(String) 
       String name = d.getString(Constants.TAG_NAME); 
       String email = d.getString(Constants.TAG_EMAIL); 
       String address = d.getString(Constants.TAG_ADDRESS); 
       String gender = d.getString(Constants.TAG_GENDER); 

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

我得到塊上的錯誤:String name = c.getString(Constants.TAG_NAME); 我想通過解析json將常量值應用於局部變量。

我跟着日食的提示,也還嘗試做

String name = c.(Constants.TAG_NAME); 

但仍沒有運氣。這個區塊有什麼問題?我如何將json值分配給局部變量? 爲了你的知識:這是我試圖實現的:android-json-parsing-tutorial 但我想保持在不同的班級不斷。

更新:所以我做了你建議的改變,我也得到新的錯誤:
String tabTitle = appConfig.(ConfigConstants.TITLE); //Error: Syntax error on token ".", Identifier expected after this token

+1

您試圖通過類實例訪問靜態成員,你sh應該使用類名訪問靜態成員。 – Habib 2013-03-25 06:27:44

+0

檢查我的答案更新,以便更新+清理代碼並將代碼粘貼到使用tabTitle的地方。目前的問題與此無關。 – SudoRahul 2013-03-25 06:48:45

回答

5

爲什麼不乾脆用這個?

Constants.TAG_NAME 

爲什麼要實例化Constants類?由於Constants類別static中的所有字段,因此只需要使用ClassName常量)以static的方式訪問它們。

更新: -

appConfig.(ConfigConstants.TITLE); 

不應該有一種方法?像這樣的東西。

appConfig.someMethodName(ConfigConstants.TITLE); 
+0

嗨,我做了更改,並做了:'字符串tabTitle = appConfig.getString(ConfigConstants.TITLE);'但仍然出現錯誤。 – star18bit 2013-03-25 06:35:55

+0

這是一個奇怪的代碼。 'for(int i = 0; i SudoRahul 2013-03-25 06:38:47

+1

'd'是一個'JSONObject',它爲getString()方法提供了一個'String'。 – SudoRahul 2013-03-25 06:40:54

0

我想你正在使用JSONArray類在包

org.json.JSONArray 

其具有方法

給出該方法接受的整數參數
getString(int) 

,如果傳遞字符串參數,這是顯而易見的錯誤通過Eclipse

+0

mmm yup you right,so how can I \t \t \t'字符串tabTitle = appConfig。(ConfigConstants.TITLE);' 這意味着將三個變量連接成一個變量 – star18bit 2013-03-25 06:38:50

+0

使用「contacts」而不是Constants.TAG_CONTACTS,對其他變量也是如此。你試一試 :) – Code2Interface 2013-03-25 06:47:58