[
{
"Eid": 1,
"Ename": "XXX有限公司1",
"Iid": 1,
"Iname": "Super ios",
"Ilnvite": 190,
"Inow": 1
},
{
"Eid": 1,
"Ename": "XXX有限公司1",
"Iid": 2,
"Iname": "Super android",
"Ilnvite": 200,
"Inow": 2
},
{
"Eid": 1,
"Ename": "XXX有限公司1",
"Iid": 3,
"Iname": "Super photoshop",
"Ilnvite": 180,
"Inow": 9
},
{
"Eid": 2,
"Ename": "XXX有限公司2",
"Iid": 4,
"Iname": "photoshop",
"Ilnvite": 170,
"Inow": 20
},
{
"Eid": 2,
"Ename": "XXX有限公司2",
"Iid": 5,
"Iname": "ios",
"Ilnvite": 220,
"Inow": 10
},
{
"Eid": 3,
"Ename": "XXX有限公司2",
"Iid": 6,
"Iname": "数据111",
"Ilnvite": 150,
"Inow": 40
},
{
"Eid": 2,
"Ename": "XXX有限公司2",
"Iid": 11,
"Iname": "数据666",
"Ilnvite": 50,
"Inow": 0
}
]
求大神帮帮忙,以上是服务器返回的json数据。
问题:Eid相同时,只保留一个,剩余其他Eid相同的,把他们的 Iname,Ilnvite,Inow添加到保留的那个Eid里。同时,若检测到Eid不相同的,那么也需要保存起来.
根据如上json数据,最终要实现的效果就是只有Eid=1;Eid=2;Eid=3这三个数据,而Eid1和Eid2中的 Iname,Ilnvite,Inow分别又有3个数据。
http://www.5icool.org/a/201209/a1629.html
先把对象拿出来再整理,不然结构变了不好取值。
你要的应该是这种JSONObject嵌套JSONArray的形式:
[{"A":[{"B":[{"C":[{....}]}]}]}]
SDK自带json-lib,大概是JSONObject,JSONArray这几个类,把上述逻辑用代码写出来就行了
解析json为list,循环分析list时把Eid添加到新的list里面,循环里面要判断list里面是否包含Eid了,如果包含,要把当前对象的相关值添加到已存在的Eid对象里面去
可以先准备list1,list2,list3....先解析EID,Eid的值有1,2,3...,当值为1的时候,可以add到list1,以此循环下去。然后在每个list中再去解析。
接受的集合 用 HashSet,然后重写下 子项对应的类的 equals方法,设置Eid相同 就equals就好了。 不了解HashSet就百度下。
说白了Iname,Ilnvite,Inow这三个属性其实是array形式的。可以遍历上面的jsonArray,判断Eid是否之前添加过(解析的数据往HashMap中存储,key存Eid,value存其他属性的集合,建议使用对象封装)
你这个逻辑就有问题,怎么那么多重复的KEY?