-
Notifications
You must be signed in to change notification settings - Fork 550
Closed
Labels
bugSomething isn't workingSomething isn't working
Milestone
Description
@Data
@NoArgsConstructor
@AllArgsConstructor
public class ApproveConfigJson implements Serializable {
private String postId;
private boolean hasPreNode = false;
private ApproveConfigJson preNode;
private boolean hasNextNode = false;
private ApproveConfigJson nextNode;
private int sort;
public ApproveConfigJson(String postId, int sort) {
this.postId = postId;
this.sort = sort;
}
}
public static void main(String[] args) {
List<ApproveConfigJson> approveConfigJsons = new ArrayList<>();
approveConfigJsons.add(new ApproveConfigJson("1",1));
approveConfigJsons.add(new ApproveConfigJson("2",2));
approveConfigJsons.add(new ApproveConfigJson("3",3));
String s = list2LinkedJson2(approveConfigJsons);
ApproveConfigJson approveConfigJson = JSON.parseObject(s, ApproveConfigJson.class);
System.err.println(approveConfigJson.getNextNode().getPreNode().getPostId());
}
public static String list2LinkedJson2(List<ApproveConfigJson> approveConfigJsons) {
approveConfigJsons = approveConfigJsons.stream().sorted(Comparator.comparing(ApproveConfigJson::getSort)).collect(Collectors.toList());
ApproveConfigJson approveUtil = null;
Iterator<ApproveConfigJson> iterator = approveConfigJsons.iterator();
ApproveConfigJson local = new ApproveConfigJson();
while (iterator.hasNext()) {
ApproveConfigJson next = iterator.next();
if (approveUtil == null) {
approveUtil = next;
local = next;
} else {
approveUtil.setHasNextNode(true);
approveUtil.setNextNode(next);
next.setHasPreNode(true);
next.setPreNode(local);
local = next;
approveUtil = approveUtil.getNextNode();
approveUtil.setNextNode(null);
}
}
ApproveConfigJson finalNode = approveUtil;
while (finalNode.isHasPreNode()) {
finalNode = finalNode.getPreNode();
}
return JSON.toJSONString(finalNode);
}按照sort排序,链表首节点为postId = 1,序列化的json串正常,但是反序列化后链表的首节点为postId = 2,且获取下级节点后再获取上级节点会出现java.lang.NullPointerException
在 ApproveConfigJson approveConfigJson = JSON.parseObject(s, ApproveConfigJson.class);方法中
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working