使用android从json中查找唯一数据

时间:2016-01-27 11:31:29

标签: android json

如何使用andorid从json响应中获取唯一结果。

嗨,我需要从json webservice获取数据,我已经读取了json中的所有数据。但我需要存储来自json的唯一值。

是否可以从json中获取唯一值?

3 个答案:

答案 0 :(得分:1)

首先,json格式不正确:

vec <- c('22_1','22_2','22_3','45_1','45_2','45_3','56'_1,'67_1','67_2' ...

要解析此数组,您需要像这样的实现

{ "lastyear": [ { "order": "96 36 08", "year": "2015", "Text": "No" }, { "order": "03 59 03", "year": "2014", "Text": "No" }, { "order": "16 50 58", "year": "2014", "Text": "No" } ]}

子对象:

import org.json.*;
import java.util.ArrayList;

public class MyObject {

private ArrayList<Lastyear> lastyear;


public MyObject () {

}   

public MyObject (JSONObject json) {


    this.lastyear = new ArrayList<Lastyear>();
    JSONArray arrayLastyear = json.optJSONArray("lastyear");
    if (null != arrayLastyear) {
        int lastyearLength = arrayLastyear.length();
        for (int i = 0; i < lastyearLength; i++) {
            JSONObject item = arrayLastyear.optJSONObject(i);
            if (null != item) {
                this.lastyear.add(new Lastyear(item));
            }
        }
    }
    else {
        JSONObject item = json.optJSONObject("lastyear");
        if (null != item) {
            this.lastyear.add(new Lastyear(item));
        }
    }


}

public ArrayList<Lastyear> getLastyear() {
    return this.lastyear;
}

public void setLastyear(ArrayList<Lastyear> lastyear) {
    this.lastyear = lastyear;
}



}

如何使用它:

import org.json.*;


public class Lastyear {

private String order;
private String year;
private String text;


public Lastyear () {

}   

public Lastyear (JSONObject json) {

    this.order = json.optString("order");
    this.year = json.optString("year");
    this.text = json.optString("Text");

}

public String getOrder() {
    return this.order;
}

public void setOrder(String order) {
    this.order = order;
}

public String getYear() {
    return this.year;
}

public void setYear(String year) {
    this.year = year;
}

public String getText() {
    return this.text;
}

public void setText(String text) {
    this.text = text;
}



}

要获得唯一值,您可以使用:

MyObject object = new MyObject(new JSONObject("YOUR_JSON"));
//Verifiy if object.getLastyear != null
int sizeList = object.getLastyear().size;

for(int i = 0; i < sizeList;i++){
    LastYear lastYear = object.getLastyear().get(i)
    Log.e("App",lastYear.getYear);
}

答案 1 :(得分:1)

将json解析为java,然后使用HashSet yearHashSet存储您的年份值。

遍历您的数组,然后将其存储为yearHashSet

最后,您将只拥有唯一的年份值。

答案 2 :(得分:0)

请尝试此代码

    private void readJson(JSONObject jobj) {
    ArrayList<String> list=new ArrayList<String>();
    JSONArray jsonArray = jobj.getJSONArray("lastyear");
    for (int i = 0; i < jsonArray.length(); i++) {
        JSONObject obj = jsonArray.getJSONObject(i);
        String year=obj.getString("year");
        if (!list.contains(year)) {
            list.add(year);
        }
    }
    System.out.println("FirstActivity.readJson()"+list);
}