<!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));}