-
Notifications
You must be signed in to change notification settings - Fork 1
Open
Description
大佬你好,你的框架挺适合我的,但是我要把后台返回给的数据处理成你demo中的样子,一直不成功
[
{
"ends": 1,
"parentId": 190,
"powerId": 145,
"powerName": "江国庆"
},
{
"ends": 1,
"parentId": 1,
"powerId": 190,
"powerName": "界港分布式"
},
{
"ends": 1,
"parentId": 190,
"powerId": 197,
"powerName": "阳光伟1"
}
]
差不多是这样子的,返回集合中的对象长度是不固定的,如果长度为1,集合中就一个对象,那这个对象的parentId一定是1。如果长度大于1,那集合中所有的对象一定有且只有一个parentId对象为1,相当于就只有一个最大的父级,没有和它平级的。
比如这里 集合中三个对象,其中第二个对象的parentId=1,那么最大的父级就是它,然后它的powerid是其他子级的parentId,就通过这样关联起来。
所以现在我要把数据处理成你demo中的,我是这样做的。
public class PowerModel {
//通过注解的方式,进行model转换
@NodeId //必填字段
public String id;
@NodeName //必填字段
public String name;
@NodePid //必填字段
public String parentId;
@NodeChild
public List<PowerModel> child; //非叶子节点必填字段
..............
}
这是model,然后首先对接受到的后台数据集合判断下长度,如果长度为1,那就简单了
if(data.length()==1){ //因为我是在新建demo中尝试,所以这里数据是一个 json文件
JSONObject jsonObject = data.getJSONObject(0);
PowerModel model = new PowerModel();
model.id = jsonObject.getInt("powerId") + "";
model.parentId = jsonObject.getInt("parentId") + "";
model.name = jsonObject.getString("powerName");
model.child = null;
result.add(model);
return result;
}
这里直接赋值,然后将child设置为null,没有子节点,然后如果数据长度大于1,把所有的parentId添加到一个集合中,然后去重,看下去重后还剩下多少个数据,这里parentId集合中有几个数据就是有几级
else if(data.length()>1){
for (int i = 0; i < data.length(); i++) {
JSONObject jsonObject = data.getJSONObject(i);
//将所有的parentId添加到一个集合中
int parentId = jsonObject.getInt("parentId");
parentIds.add(parentId);
//将json数据全部赋值并且添加到新model的集合中
PowerModel model = new PowerModel();
model.id = jsonObject.getInt("powerId") + "";
model.parentId = jsonObject.getInt("parentId") + "";
model.name = jsonObject.getString("powerName");
model.child = null; //假设全部是子节点
result.add(model);
}
//去重
removeDuplicate(parentIds);
Log.d(TAG, "parentIds-->" + parentIds.toString());
有点尴尬了,接下来我所有的思路都有问题,得不出正确的结果,所以请求大佬帮帮忙,帮我瞧一瞧.....
Metadata
Metadata
Assignees
Labels
No labels