<!DOCTYPEHTML>
<htmllang="en-US">
<head>
<metacharset="UTF-8">
<title>menu</title>
<styletype="text/css">
</style>
</script>
<scripttype="text/javascript">
varjson=[
{
"index":"name",
"id":4,
"colspan":1,
"sort":0,
"title":"你是",
"age":40
},
{
"id":4,
"colspan":3,
"sort":1,
"title":"我",
"age":40
},
{
"id":4,
"colspan":15,
"sort":2,
"title":"的",
"age":40
},
{
"index":"a",
"id":3,
"colspan":1,
"sort":0,
"title":"人",
"age":20
},
{
"index":"b",
"id":3,
"colspan":1,
"sort":1,
"title":"好",
"age":20
},
{
"id":3,
"colspan":5,
"sort":2,
"title":"馬",
"age":40
},
{
"id":2,
"colspan":2,
"sort":0,
"title":"上",
"age":40
},
{
"id":2,
"colspan":2,
"sort":1,
"title":"就",
"age":40
},
{
"index":"f",
"id":2,
"colspan":1,
"sort":2,
"title":"額",
"age":25
},
{
"index":"c",
"id":1,
"colspan":1,
"sort":0,
"title":"一",
"age":30
},
{
"index":"d",
"id":1,
"colspan":1,
"sort":1,
"title":"個",
"age":25
}
];
vararray=[],obj={};
for(vari=0;i<json.length;i++)
{
vartemp=obj[json[i].id];
if(!temp)
{
obj[json[i].id]=[
json[i]
];
}
elseif(temp.length>0)
{
temp.push(json[i]);
temp.sort(function(a,b)
{
varx=parseFloat(a["sort"],10),y=parseFloat(b["sort"],10);
if(x>y)
{
return1;
}
elseif(x<y)
{
return-1;
}
else
{
return0;
}
});
}
}
for(varpinobj)
{
array.push(obj[p]);
}
array.sort(function(a,b)
{
varx=parseFloat(a[0].id,10),y=parseFloat(b[0].id,10);
if(x>y)
{
return-1;
}
elseif(x<y)
{
return1;
}
else
{
return0;
}
});
console.log(array)
</script>
</head>
<body>
</body>
</html>
B. js遍歷json對象(推薦)
原生js遍歷json對象
遍歷json對象:
無規律:
有規律:
遍歷json對象
有如下 json對象:
var obj ={"name":"馮娟","password":"123456","department"兄裂:"技羨運閉術部","sex":"女","old":30};
遍歷方法:
數組對象的遍歷:
下面我悄前們對照一下js和jquer的遍歷方法:
原文網址: https://www.cnblogs.com/qingqingzou-143/p/7079725.html
C. js遍歷json對象順序問題,使用for in遍歷json對象發現排序了,和本來的順序不一樣,有什麼解決辦法
vara={
"3":'第一',
"1":'第二',
"5":'第三',
};
vartmp=JSON.stringify(a);
tmp=tmp.replace(/([{,])([^:]+):([^:,]+)(?=[,}])/g,"$1$3:$2");
varobj=eval("("+tmp+")");
for(varpinobj){
console.info(obj[p]+":"+p);
}
D. JAVA中按原順序遍歷JSONObject
正常的玩法應該是這樣, 因為 ObjectMapper 有各種配置, 可以更好的實現轉換, 比如 解析數據順序, 忽略錯誤欄位 等等 高端大氣上檔次的東西, 你的方法已經被時代淘汰了。
ObjectMapper objectMapper = new ObjectMapper();
Map map = objectMapper.readValue(resultStr,LinkedHashMap.class);
E. JAVA中遍歷JSONObject不能按原順序遍歷
這個估計沒辦法,json本來就是無序的。我來試一下,沒遇到這種情況。
可以重寫原碼,不過不推薦,如下:
要使輸出是有序的,可以用LinkedHashMap來替換HashMap。
修改org.json.JSONObject的構造函數,
public JSONObject() {
this.map = new LinkedHashMap(); //new HashMap();
}
可能會對JSON 函數的執行效率有所影響。
F. 遍歷json問題
不見一用for in循環,因為不是所有元素都支持for in的,至於為什麼出現這個情況應該是本身的機制所致,很容易看到你裡面的值是正整數、字元串、負整數,那麼就是它會先輸出正整數,然後是字元串,最後才是負數。想安裝原來的順序輸出可以把JSON轉換成數組,然後用for循環,這樣就不會亂序了~
G. Jquery中,如何固定一種遍歷json的順序
這和各瀏覽器的Map鍵名的遍歷方法相關,jquery只不過是包裝了一下 for (key in obj)。
解決方法為將鍵名放入的專數組屬,通過遍歷數組的方式就不會有問題了。
var a = [];
$.each(obj, function(key, val) { a[a.length] = key; });
a.sort();
$.each(a, function(i, key) {
window.alert("key = " + obj[key]); // 訪問JSON對象屬性
});
H. json數據請問怎麼遍歷
如果是js中遍歷使用
var anObject = {one:1,two:2,three:3};//對json數組each
$.each(anObject,function(name,value) {
});
如果是Java代碼直接用for循環就行了,說白了json也是數組的一種,json對象和json數組都可以
//遍歷json數組
String json1 = "{data:[{name:'Wallace'},{name:'Grommit'}]}";
jsonObjSplit = new JSONObject(json1);
JSONArray ja = jsonObjSplit.getJSONArray("data");
for (int i = 0; i < ja.length(); i++) {JSONObject jo = (JSONObject) ja.get(i);System.out.println(jo.get("name"));}
//JSONObject遍歷json對象
String json2 = "{name:'Wallace',age:15}";
jsonObj = new JSONObject(json2);
for (Iterator iter = jsonObj.keys(); iter.hasNext();) {String key = (String)iter.next();System.out.println(jsonObj .getString(Key));}