NO IMAGE

如何解決JsonObject無序的問題

最近做一個專案解析json資料的時候遇到了json無序的問題,網上搜了半天沒找到辦法,只能自己想辦法了。
先看json資料:

 {
"1": "尺碼",
"2": "款式",
"3": "顏色"
}

我就想按照順序輸出:

1:尺碼 2:款式 3:顏色

但是經常輸出是無序的。
我的解決辦法思路是這樣的:先將json解析成連結串列,然後重新排序一下,具體程式碼如下:

定義一個modle 用來儲存每一個item.

public class SpecEntity implements Comparable<SpecEntity>{
private int id;
private String spec;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getSpec() {
return spec;
}
public void setSpec(String spec) {
this.spec = spec;
}
@Override
public int compareTo(SpecEntity o) {
if(this.id < o.getId()){
return -1;
}else if(this.id == o.getId()){
return 0;
}else if(this.id > o.getId()){
return 1;
}
return 0;
}
}

將json資料解析成連結串列,程式碼如下:

private ArrayList<SpecEntity> getJsonList(String jsonStr){
ArrayList<SpecEntity>specList = new ArrayList<SpecEntity>();
try {
JSONObject spec_nameJSONObject = new JSONObject(jsonStr);
Iterator<String> spec_nameIterator = spec_nameJSONObject.keys();
while (spec_nameIterator.hasNext()) {
String key = spec_nameIterator.next();
SpecEntity apecEntity = new SpecEntity();
apecEntity.setSpecKey(key);
apecEntity.setSpecValue(spec_nameJSONObject.getString(key));
specList.add(apecEntity);
}
//看到沒這個才是重點!!!!!!
Collections.sort(agentGoodsDetailSpaceBean.getSpec_name());
} catch (Exception e) {
DebugLogUtil.getInstance().Error(e.toString());
}
return specList;
}

大家看明白沒?下面這句話才是重點,先將json解析成連結串列,然後給連結串列排序:

Collections.sort(specList);

好了就講到這吧。如果有更好的辦法,請大家告知我,謝謝!