2017-02-21 139 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用户中;