如何使用andorid从json响应中获取唯一结果。
嗨,我需要从json webservice获取数据,我已经读取了json中的所有数据。但我需要存储来自json的唯一值。
是否可以从json中获取唯一值?
答案 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);
}