相关文章推荐
傻傻的南瓜  ·  TypeError: expected ...·  3 月前    · 
腼腆的椅子  ·  Echarts3实例 ...·  1 年前    · 
玩足球的莴苣  ·  Java 9 ...·  1 年前    · 

就在今天2018年8月10号  遇到json部分数据丢失很是纳闷:

先来看数据结构:

[{
"b_id": 1,
"father_id": 1,
"children_id": 0,
"text": "工作平台",
"time": 1531735386000,
"name": "AC",
"statu": 0,
"btn_id": 0,
"children": [{
"b_id": 13,
"father_id": 57,
"children_id": 1,
"text": "客户管理",
"time": 1531735454000,
"name": "AC",
"statu": 0,
"btn_id": 0,
"children": [{
"b_id": 14,
"father_id": 58,
"children_id": 57,
"text": "我的客户",
"time": 1531735454000,
"name": "AC",
"statu": 0,
"btn_id": 0,
"children": []
}, {
"b_id": 15,
"father_id": 59,
"children_id": 57,
"text": "公海客户",
"time": 1531735454000,
"name": "AC",
"statu": 0,
"btn_id": 0,
"children": []
}]
}, {
"b_id": 33,
"father_id": 66,
"children_id": 1,
"text": "测试one",
"time": 1532416818000,
"name": null,
"statu": 0,
"btn_id": 0,
"children": [{
"b_id": 34,
"father_id": 67,
"children_id": 66,
"text": "测试two",
"time": 1532417008000,
"name": null,
"statu": 0,
"btn_id": 0,
"children": null
}]
}]
}]

仔细看这个数据结构有什么不同处,仔细观察json key为children  有的是数组,有的是null 这就是部分数据丢失的原因

因为我在递归的时候递归是children数组  所以在当遇到children 为null 的时候 undefined 不继续往下执行

附上代码:

function checkBox(data){
   for (var j=0;j<data.length;j++){
     checkBox(data[j].children);

解决方案:

 1,判断children是不是数组

2,判断数组是不是null 如果是null 跳出循环,进行下一次循环

当然还有其他的解决办法或者产生数据丢失也不止是因为children是null  供参考;

经过一番努力后,所有东西正慢慢变成我想要的样子

就在今天2018年8月10号  遇到json部分数据丢失很是纳闷:先来看数据结构:[{    &quot;b_id&quot;: 1,    &quot;father_id&quot;: 1,    &quot;children_id&quot;: 0,    &quot;text&quot;: &quot;工作平台&quot;,    &quot;time&quot;: 1531735386000,    &quot;name&quot;: &quot;AC&quot;,    &q
本文实例讲述了js json树实现根据子id查父id的方法。分享给大家供大家参考,具体如下: 最近做了一个类似用js实现思维导图的功能,作为思维导图,一定会有树状结构的数据产生,在操作里面的节点会经常需要查找节点 的父节点及父节点。 对于未知层级的树状数据,用for循环是无法实现的,因为不知道要循环几层,那么最合适的方法就是用js归 界面结构: json数据: orgTreeData:{ nodeId:19A5B, nodeName:预分析用户:1313.85万人, nodeType:root, expand:true,
Json对象取对应字段,如果多个对象中出现key值缺失,会报keyerror[‘...’], 这个候可以采用dict.setdefault(“....”,’ ’),创建缺失的key字段,并给一个默认的值。
在实现一个权限管理系统过程中,用户登录后需要返回该用户可使用的接口地址。可是在返回数据中发少了一些信息。接下来直接看代码。 简单的来说就是获取该表的所有信息。可是得到的结果却是这样的。。 很明显只获取到了id,并没有得到outlink字段信息。接下来检查了一遍代码 @RequestMapping(value = "/login",method=RequestMethod.POST
fastjson是阿里开发的一个javaBean和json解析器和封装器(源码位置),用过几次感觉挺好用的,也是国人的开源项目当然得支持,但最近项目在使用mongodb作为数据出现了_id丢失的问题,现将我遇到的问题和解决办法展示一下。 现将错误的程序代码添加上,然后再提供解决方法: package org.jivesoftwa...
// 获取设备列表,带筛选条件 /lift/devices?pageNo=1&pageSize=10&query={'title':'输入框条件','theOnline':'全部-1,在线1,下线0','status':'全部-1,启用1,停用0','type':'传感器类型'} 解决方...
最近前端在解析后端返回的 json 数据解析后发现数值类型的精度丢失,长度超过17位后面的所有数都变成 0 ; var obj = 'var obj = '{"id":50000000000050153333}'; var jsonObj = JSON.parse(obj); console.log(jsonObj);'; 打印的结果为(16位之后都边成0): 50000000000050150000 解决办法: 由于数据是通过第三方接口返回的 xml 字符串转换而来,所以决定在后端将所有字段转成字符
使用ajax获取接口数据,在控制台response处看到的和我用代码在完成接口调用后打印出的数据不一样。如下图: 很奇怪接口传的Device数组有值,但代码打印出来Device却是一个空数组,除Device外其他数据都正常。 受一位大神启发对复杂数据接收应用深拷贝,不能直接“=”赋值,于是我尝试了Object.assign还有JSON.parse(JSON.stringify()),但是,转之后打印的仍然是空数组!将第二种方法直接放入console.log(…)却可以看到Device里有数据 let re
import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.databind.JsonMappingException; import com.fasterxml.jackson.databind.JsonNode; import com.fasterxml.jackson.databind.ObjectMapper; public class JsonTreeDeserializer { private static ObjectMapper mapper = new ObjectMapper(); public static void main(String[] args) { String json = "{\"id\":1,\"name\":\"root\",\"children\":[{\"id\":2,\"name\":\"child1\",\"children\":[{\"id\":3,\"name\":\"grandchild1\"},{\"id\":4,\"name\":\"grandchild2\"}]},{\"id\":5,\"name\":\"child2\",\"children\":[{\"id\":6,\"name\":\"grandchild3\"},{\"id\":7,\"name\":\"grandchild4\"}]}]}"; try { JsonNode rootNode = mapper.readTree(json); Node tree = deserialize(rootNode); System.out.println(tree); } catch (JsonParseException e) { e.printStackTrace(); } catch (JsonMappingException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); public static Node deserialize(JsonNode node) { int id = node.get("id").asInt(); String name = node.get("name").asText(); Node tree = new Node(id, name); JsonNode childrenNode = node.get("children"); if (childrenNode != null && childrenNode.isArray()) { for (JsonNode childNode : childrenNode) { Node child = deserialize(childNode); tree.addChild(child); return tree; class Node { private int id; private String name; private List<Node> children; public Node(int id, String name) { this.id = id; this.name = name; this.children = new ArrayList<Node>(); public void addChild(Node node) { this.children.add(node); @Override public String toString() { return "Node [id=" + id + ", name=" + name + ", children=" + children + "]"; 这个示例代码使用了 Jackson 库来进行 JSON 反序列化。首先读取 JSON 数据,然后归地反序列化每个节点,并构建树形结构。最后输出树形结构。