2017-02-21 138 views
-4

我完全不知道Json。現在我正在Android項目中工作。我知道如何使用Array。我的Android項目中的Asset文件夾內有Json文件。 和我必須從json數據中只提取標準值並將其存儲在一個空數組中。我的JSON數據是,如何獲得數組中的json值

[ 
{ 
    "name":"aaa", 
    "surname":"bbb", 
    "age":"18", 
    "div":"A", 
    "standard":"7" 
}, 
{ 
    "name":"ccc", 
    "surname":"ddd", 
    "age":"17", 
    "div":"B", 
    "standard":"7" 
}, 
{ 
    "name":"eee", 
    "surname":"fff", 
    "age":"18", 
    "div":"A", 
    "standard":"8" 
}, 
{ 
    "name":"ggg", 
    "surname":"hhh", 
    "age":"17", 
    "div":"A", 
    "standard":"7" 
}, 
{ 
    "name":"sss", 
    "surname":"ddd", 
    "age":"18", 
    "div":"A", 
    "standard":"8" 
}, 
{ 
    "name":"www", 
    "surname":"ggg", 
    "age":"17", 
    "div":"A", 
    "standard":"7" 
}, 
{ 
    "name":"ggg", 
    "surname":"ccc", 
    "age":"18", 
    "div":"B", 
    "standard":"6" 
} 

] 我不打不通,我可以做到這一點的方式。因爲我必須檢查json數據中的每個標準,並將其添加到爲存儲標準valuee而創建的數組中,以便我可以將這些標準值與每個satdeard值進行比較,如果它已經存在於數組中,則它可以檢查josn數據中的下一個索引,因此唯一值可以存儲在may數組上。

我不知道要實現這一點,因爲我是新的android和json。

+0

有關如何解析/處理json的詳細說明:http://stackoverflow.com/questions/9605913/how-to-parse-json-in-android –

+0

[Android Java;我怎樣才能解析一個本地JSON文件從資產文件夾到ListView](http://stackoverflow.com/questions/19945411/android-java-how-can-i-parse-a-local-json-file-from- assets-folder-into-a-listvi) –

+0

@Jonathan我做了這個選項,你已經建議。但我不想這樣做 – neeta

回答

0

你可以這樣說:

//Global Declared 
    ArrayList<String> allStanderds = new ArrayList<>(); 

    allStanderds.clear(); 
     try{ 
      JSONArray araay = new JSONArray(Your_Json_Array_String); 
      for (int i = 0; i <array.length() ; i++) { 

        JSONObject jsonObject = new array.getJSONObject(i); 

        String standard = jsonObject.getString("standard"); 

        if(!allStanderds.contains(standard)){ 
        allStanderds.add(standard); 
        } 

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

// use allStanderds ArrayList for SetAdapter for Spinner. 

快樂編碼> :)

+0

我只想從json獲取stanadrd值,然後將每個唯一值形式的標準json數據存儲到使用標準json中的每個元素共同映射創建的數組中,然後僅將該值存儲在我的數組中。請幫助我 – neeta

+0

你想從你的數組中獲得什麼?@Neha – RushDroid

+0

將通過比較每個標準值之前獲得的標準的獨特價值獲得添加到微調器 – neeta

2

對JSON的容易解析使用GSON

TypeToken>標記=新TypeToken>(){};列表動物= gson.fromJson(data,token.getType());

可以使用http://www.jsonschema2pojo.org/創建用戶類

public class User { 

@SerializedName("name") 
@Expose 
private String name; 
@SerializedName("surname") 
@Expose 
private String surname; 
@SerializedName("age") 
@Expose 
private String age; 
@SerializedName("div") 
@Expose 
private String div; 
@SerializedName("standard") 
@Expose 
private String standard; 

public String getName() { 
return name; 
} 

public void setName(String name) { 
this.name = name; 
} 

public String getSurname() { 
return surname; 
} 

public void setSurname(String surname) { 
this.surname = surname; 
} 

public String getAge() { 
return age; 
} 

public void setAge(String age) { 
this.age = age; 
} 

public String getDiv() { 
return div; 
} 

public void setDiv(String div) { 
this.div = div; 
} 

public String getStandard() { 
return standard; 
} 

public void setStandard(String standard) { 
this.standard = standard; 
} 

} 
0

請儘量使用這一個

try{ 
    String assestValue = getStringFromAssets(); 

    JSONArray arr = new JSONArray(assestValue); 

     int count = arr.length(); 
     for (int i=0; i < count; i++){ 
      JSONObject obj = arr.getJSONObject(i); 

      String name = obj.getString("name"); 
      String surname = obj.getString("surname"); 
      String age = obj.getString("age"); 
      String div = obj.getString("div"); 
      String standard = obj.getString("standard"); 

     } 

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



public String getStringFromAssets(){ 

    String str = ""; 
    try { 
     StringBuilder buf = new StringBuilder(); 
     InputStream json = getAssets().open("contents.json");//put your json name 
     BufferedReader in = 
       new BufferedReader(new InputStreamReader(json, "UTF-8")); 


     while ((str = in.readLine()) != null) { 
      buf.append(str); 
     } 

     in.close(); 

     return str; 

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

    return str; 
} 

喜歡編程:)

+0

最初在我的程序中有一個空數組,它將在與標準json數據中存在的每個元素進行比較之後逐一存儲標準值,所以在我的數組中只包含唯一值而不是存在於我的json數據中的所有重複值 – neeta

0
  1. installl在Android Studio中GsonFormat插件
  2. 使用JSON字符串來生成一個用戶實體(例如:UserEntity.class)
  3. 現在,您可以使用UserEntity user=new Gson().fromJson(yourString,UserEntity.class);
  4. 現在,您的json字符串現在存儲在Object用戶中;