json键值对过滤:去掉不需要的键值对_电脑编程入门教程

未解决  未打赏  
Admin Admin  悬赏: 500 金币
发布:2018-04-28 13:10:07 分类:问答
求助高手指导,先谢为敬.
用简单的json来测试是可以的过滤的:
import console; 
var tab = {}
tab.a = 1;
tab.b = {1;2;3}
tab.c = 3;

console.varDump(tab)

//tab.a = null;
for k,v in table.eachName(tab){
if(k="b"){
tab[k] = null;
}
}

console.varDump(tab)

console.pause(true);

然后用复杂点的json来测试,过滤不了,
我只需要保留  
"name":"叶子节点232",   
"open":false,   
"nocheck":false,
等几个特定键名的

import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=1111;bottom=696)
winform.add(
button={cls="button";text="button";left=402;top=648;right=558;bottom=681;z=2};
edit={cls="edit";left=22;top=17;right=1099;bottom=624;edge=1;hscroll=1;multiline=1;vscroll=1;z=1}
)
/*}}*/

var jsonStr = /*
{
"check_Child_State":0,
"check_Focus":false,
"checkedOld":null,
"children":[
{
"check_Child_State":0,
"check_Focus":false,
"checkedOld":null,
"children":[
{
"check_Child_State":-1,
"check_Focus":false,
"checkedOld":null,
"chkDisabled":false,
"editNameFlag":false,
"getCheckStatus":"function: 024D3650",
"getIndex":"function: 024D3740",
"getNextNode":"function: 024D3830",
"getParentNode":"function: 024D3920",
"getPath":"function: 024D3A10",
"getPreNode":"function: 024D3AD0",
"halfCheck":false,
"isAjaxing":false,
"isFirstNode":true,
"isHover":false,
"isLastNode":false,
"level":2,
"name":"叶子节点212",
"nocheck":false,
"open":false,
"parentTId":"treeDemo_14",
"tId":"treeDemo_15",
"zAsync":true
},
{
"check_Child_State":-1,
"check_Focus":false,
"checkedOld":null,
"chkDisabled":false,
"editNameFlag":false,
"getCheckStatus":"function: 024D4EE0",
"getIndex":"function: 024D4FA0",
"getNextNode":"function: 024D5060",
"getParentNode":"function: 024D5120",
"getPath":"function: 024D51E0",
"getPreNode":"function: 024D52A0",
"halfCheck":false,
"isAjaxing":false,
"isFirstNode":false,
"isHover":true,
"isLastNode":false,
"level":2,
"name":"叶子节点213",
"nocheck":false,
"open":false,
"parentTId":"treeDemo_14",
"tId":"treeDemo_16",
"zAsync":true
},
{
"check_Child_State":-1,
"check_Focus":false,
"checkedOld":null,
"chkDisabled":false,
"editNameFlag":false,
"getCheckStatus":"function: 024D5CC0",
"getIndex":"function: 024D5D80",
"getNextNode":"function: 024D5E40",
"getParentNode":"function: 024D5F00",
"getPath":"function: 024D5FC0",
"getPreNode":"function: 024D6080",
"halfCheck":false,
"isAjaxing":false,
"isFirstNode":false,
"isHover":false,
"isLastNode":true,
"level":2,
"name":"叶子节点214",
"nocheck":false,
"open":false,
"parentTId":"treeDemo_14",
"tId":"treeDemo_17",
"zAsync":true
}
],
"chkDisabled":false,
"editNameFlag":false,
"getCheckStatus":"function: 024D6470",
"getIndex":"function: 024D6530",
"getNextNode":"function: 024D65F0",
"getParentNode":"function: 024D66B0",
"getPath":"function: 024D6770",
"getPreNode":"function: 024D6830",
"halfCheck":false,
"isAjaxing":false,
"isFirstNode":true,
"isHover":false,
"isLastNode":false,
"isParent":true,
"level":1,
"name":"父节点21 - 展开",
"nocheck":false,
"open":true,
"parentTId":"treeDemo_13",
"tId":"treeDemo_14",
"zAsync":true
},
{
"check_Child_State":0,
"check_Focus":false,
"checkedOld":null,
"children":[
{
"check_Child_State":-1,
"check_Focus":false,
"checkedOld":null,
"chkDisabled":false,
"editNameFlag":false,
"getCheckStatus":"function: 024E02A8",
"getIndex":"function: 024E0368",
"getNextNode":"function: 024E0428",
"getParentNode":"function: 024E04E8",
"getPath":"function: 024E05A8",
"getPreNode":"function: 024E0668",
"halfCheck":false,
"isAjaxing":false,
"isFirstNode":true,
"isHover":false,
"isLastNode":false,
"level":2,
"name":"叶子节点221",
"nocheck":false,
"open":false,
"parentTId":"treeDemo_18",
"tId":"treeDemo_19",
"zAsync":true
},
{
"check_Child_State":-1,
"check_Focus":false,
"checkedOld":null,
"chkDisabled":false,
"editNameFlag":false,
"getCheckStatus":"function: 024E10B8",
"getIndex":"function: 024E1178",
"getNextNode":"function: 024E1238",
"getParentNode":"function: 024E12F8",
"getPath":"function: 024E13B8",
"getPreNode":"function: 024E1478",
"halfCheck":false,
"isAjaxing":false,
"isFirstNode":false,
"isHover":false,
"isLastNode":false,
"level":2,
"name":"叶子节点222",
"nocheck":false,
"open":false,
"parentTId":"treeDemo_18",
"tId":"treeDemo_20",
"zAsync":true
},
{
"check_Child_State":-1,
"check_Focus":false,
"checkedOld":null,
"chkDisabled":false,
"editNameFlag":false,
"getCheckStatus":"function: 024E6F58",
"getIndex":"function: 024E7018",
"getNextNode":"function: 024E70D8",
"getParentNode":"function: 024E7198",
"getPath":"function: 024E7258",
"getPreNode":"function: 024E7318",
"halfCheck":false,
"isAjaxing":false,
"isFirstNode":false,
"isHover":false,
"isLastNode":false,
"level":2,
"name":"叶子节点223",
"nocheck":false,
"open":false,
"parentTId":"treeDemo_18",
"tId":"treeDemo_21",
"zAsync":true
},
{
"check_Child_State":-1,
"check_Focus":false,
"checkedOld":null,
"chkDisabled":false,
"editNameFlag":false,
"getCheckStatus":"function: 024E7D38",
"getIndex":"function: 024E7DF8",
"getNextNode":"function: 024E7EB8",
"getParentNode":"function: 024E7F78",
"getPath":"function: 024E8038",
"getPreNode":"function: 024E80F8",
"halfCheck":false,
"isAjaxing":false,
"isFirstNode":false,
"isHover":false,
"isLastNode":true,
"level":2,
"name":"叶子节点224",
"nocheck":false,
"open":false,
"parentTId":"treeDemo_18",
"tId":"treeDemo_22",
"zAsync":true
}
],
"chkDisabled":false,
"editNameFlag":false,
"getCheckStatus":"function: 024E84E8",
"getIndex":"function: 024E85A8",
"getNextNode":"function: 024E8668",
"getParentNode":"function: 024E8728",
"getPath":"function: 024F0D78",
"getPreNode":"function: 024F0E38",
"halfCheck":false,
"isAjaxing":false,
"isFirstNode":false,
"isHover":false,
"isLastNode":false,
"isParent":true,
"level":1,
"name":"父节点22 - 折叠",
"nocheck":false,
"open":false,
"parentTId":"treeDemo_13",
"tId":"treeDemo_18",
"zAsync":true
},
{
"check_Child_State":0,
"check_Focus":false,
"checkedOld":null,
"children":[
{
"check_Child_State":-1,
"check_Focus":false,
"checkedOld":null,
"chkDisabled":false,
"editNameFlag":false,
"getCheckStatus":"function: 024F1F48",
"getIndex":"function: 024F2008",
"getNextNode":"function: 024F20C8",
"getParentNode":"function: 024F2188",
"getPath":"function: 024F2248",
"getPreNode":"function: 024F2308",
"halfCheck":false,
"isAjaxing":false,
"isFirstNode":true,
"isHover":false,
"isLastNode":false,
"level":2,
"name":"叶子节点231",
"nocheck":false,
"open":false,
"parentTId":"treeDemo_23",
"tId":"treeDemo_24",
"zAsync":true
},
{
"check_Child_State":-1,
"check_Focus":false,
"checkedOld":null,
"chkDisabled":false,
"editNameFlag":false,
"getCheckStatus":"function: 02509BC0",
"getIndex":"function: 02509C80",
"getNextNode":"function: 02509D40",
"getParentNode":"function: 02509E00",
"getPath":"function: 02509EC0",
"getPreNode":"function: 02509F80",
"halfCheck":false,
"isAjaxing":false,
"isFirstNode":false,
"isHover":false,
"isLastNode":false,
"level":2,
"name":"叶子节点232",
"nocheck":false,
"open":false,
"parentTId":"treeDemo_23",
"tId":"treeDemo_25",
"zAsync":true
},
{
"check_Child_State":-1,
"check_Focus":false,
"checkedOld":null,
"chkDisabled":false,
"editNameFlag":false,
"getCheckStatus":"function: 0250A9A0",
"getIndex":"function: 0250AA60",
"getNextNode":"function: 0250AB20",
"getParentNode":"function: 0250ABE0",
"getPath":"function: 0250ACA0",
"getPreNode":"function: 0250AD60",
"halfCheck":false,
"isAjaxing":false,
"isFirstNode":false,
"isHover":false,
"isLastNode":false,
"level":2,
"name":"叶子节点233",
"nocheck":false,
"open":false,
"parentTId":"treeDemo_23",
"tId":"treeDemo_26",
"zAsync":true
},
{
"check_Child_State":-1,
"check_Focus":false,
"checkedOld":null,
"chkDisabled":false,
"editNameFlag":false,
"getCheckStatus":"function: 0250B780",
"getIndex":"function: 0250B840",
"getNextNode":"function: 0250B900",
"getParentNode":"function: 0250B9C0",
"getPath":"function: 0250BA80",
"getPreNode":"function: 0250D460",
"halfCheck":false,
"isAjaxing":false,
"isFirstNode":false,
"isHover":false,
"isLastNode":true,
"level":2,
"name":"叶子节点234",
"nocheck":false,
"open":false,
"parentTId":"treeDemo_23",
"tId":"treeDemo_27",
"zAsync":true
}
],
"chkDisabled":false,
"editNameFlag":false,
"getCheckStatus":"function: 0250D850",
"getIndex":"function: 0250D910",
"getNextNode":"function: 0250D9D0",
"getParentNode":"function: 0250DA90",
"getPath":"function: 0250DB50",
"getPreNode":"function: 0250DC10",
"halfCheck":false,
"isAjaxing":false,
"isFirstNode":false,
"isHover":false,
"isLastNode":true,
"isParent":true,
"level":1,
"name":"父节点23 - 折叠",
"nocheck":false,
"open":false,
"parentTId":"treeDemo_13",
"tId":"treeDemo_23",
"zAsync":true
}
],
"chkDisabled":false,
"editNameFlag":false,
"getCheckStatus":"function: 024E6838",
"getIndex":"function: 024D6AA0",
"getNextNode":"function: 024F1948",
"getParentNode":"function: 01D67078",
"getPath":"function: 01D67408",
"getPreNode":"function: 01D674C8",
"halfCheck":false,
"isAjaxing":false,
"isFirstNode":false,
"isHover":false,
"isLastNode":false,
"isParent":true,
"level":0,
"name":"工作文件",
"nocheck":false,
"open":true,
"parentTId":null,
"tId":"treeDemo_13",
"zAsync":true
}
*/

import web.json;
import console;
winform.button.oncommand = function(id,event){
var tab,errInfo = web.json.tryParse(jsonStr)
if(errInfo){
console.log("jsonStr没能转换成table对象",errInfo)
return ;
}
console.varDump(tab)
console.log("===================================")

//用遍历来删除键值对无效
for k,v in table.eachName(tab){

if(k!="name" or k!="children"){
tab[k] = null
}
//console.log(k,v)
}

//单个删除键值对有效
console.log(tab.check_Child_State)
tab.check_Child_State = null;
console.log(tab.check_Child_State)

console.log("-----------------------")

//遍历删除后的表
for k,v in table.eachName(tab){
console.log(k,v)
}

console.log("==============================================")
console.varDump(tab)

}

winform.show()
win.loopMessage();


输出:
参数位置:1
数据类型:table
变量值: {
    check_Child_State = null
    check_Focus = null
    checkedOld = null
    children = null
    chkDisabled = null
    editNameFlag = null
    getCheckStatus = null
    getIndex = null
    getNextNode = null
    getParentNode = null
    getPath = null
    getPreNode = null
    halfCheck = null
    isAjaxing = null
    isFirstNode = null
    isHover = null
    isLastNode = null
    isParent = null
    level = null
    name = null
    nocheck = null
    open = null
    parentTId = null
    tId = null
    zAsync = null
}

为什么会变成这样,不是应该把键名不等于"name"和"children"的键值对清除掉吗?为何全变成了值为null?
  • Admin Admin    
    Time:2018-04-28 15:02:38
    感谢群友炸二串帮解决了

    winform.button2.oncommand = function(id,event){

    //这个可以成功过滤了
    var tab = web.json.parse(jsonStr)
    var fields = {name ="name"; open="open"; nocheck = "nocheck"}
    fieldsFilter = function(data){
    var arr = {}

    for(k,v in data){
    var field = fields[ k ]
    if(field) arr[field] = v

    if(type(v) === "table"){
    arr.children = {}

    for(kk,vv in v){
    table.push(arr.children, fieldsFilter(vv))
    }
    }
    }

    return arr
    }

    console.dumpJson( fieldsFilter(tab) )
    }

  • Admin Admin    
    Time:2018-04-28 16:17:55
    aardio官方新出的函数,可以很简洁地解决json过滤的问题:
    winform.button3.oncommand = function(id,event){
    //aardio的table库新函数
    var tab = web.json.parse(jsonStr)
    var fields = {name ="name"; open="open"; nocheck = "nocheck"}
    tab = table.mapr(tab,lambda(v,k) fields[k] ? v );
    winform.edit.print(tab)
    }

[ 发单/接单 ]
换IP投票软件
PC蛋蛋自动挂机投注
新浪微博发微博显示尾巴的方法,比如显示来自iphone 7
百度文库批量自动上传软件
一点资讯app刷阅读量/评论/收藏/订阅功能/手机号注册
定做一个阿迪达斯官网注册器(需要破点击文字式验证码)
定制人人网自动注册/修改资料/采集/私聊软件
酷狗繁星直播网页协yi
YY多功能刷订阅刷粉丝
滑块验证码本地识别
狼人杀POST QQ登录注册 获取金币数量
做个贴吧发发帖的软件懂的来
今日头条账号保存cookie
抖音粉丝软件定做,只要粉丝
百家号自媒体发文软件定制
哔哩哔哩播放量
读取TB某个商品上架时间和相关信息
网易博客软件定制
定制天涯论坛发帖软件
定制今日头条批量自动发私信软件
[ 站内搜索 ]
[ 最近热帖 ]
万能助手 -- 扩展库大全集 13746
用aardio创建web工程图文讲解(1) 12834
电脑编程入门自学:Fiddler https 抓包时提示创建根证书不成功问题彻底解决(https插件dll方式) 11738
aardio绘图演示 11408
通过chrome.dll中间件控制外部chrome浏览器 10118
我常用的aardio技巧 9769
《边学C语言边赚钱——简码编程入门教程》系列集合 9614
aardio使用http或whttp进行get/post请求时经常cookies失效怎么办?__电脑计算机编程入门教程自学 9320
[源码下载]简码视频加密解密播放工具个人版v1.0发布,永久免费开源的知识变现神器 8555
python人工智能爬虫系列:怎么查看python版本_电脑计算机编程入门教程自学 8047
编程入门教程:aardio批量上传文件并显示进度条 7880
aardio调用nodejs的ws模块做一个简单的聊天通信示例 7035
电脑计算机编程入门教程自学:原生JavaScript判断字符是否为A-Za-z英文字母 6906
电脑计算机编程入门教程自学:腾讯tx或极验geetest滑块按住拖动完成拼图验证成功破解思路及源码 6499
乐玩插件AARDIO调用 6082
[ 近期热答 ]
电脑计算机编程入门教程自学:什么是buffer缓冲区? 1
aardio_代码编辑框书签管理器开源 1
aardio_怎么用ide库从代码编辑框中取出指定行的源码? 1
aardio_codepage代码页编码乱码暴力猜解工具 1
aardio内嵌echarts图表添加鼠标事件响应功能 2
aardio列表框listbox_模糊查找和精确查找 1
8亿QQ绑定手机泄露:通过腾讯QQ号查询QQ绑定的手机号码漏洞! 1
carl listviewex调用例子----------源码搬运工 2
Aardio内嵌Electron浏览框怎么正确添加启动参数? 1
Aardio取汉字的字节数或字符数 1
怎么实现mssql图片数据的读写 2
aardio_从49个数字里选六个和值为150的不重复的数字 1
在嵌入wps的时候,多了一个 透明的边框,这个怎么消除它 1
万能助手入门帮助教程:学会科学地管理工作文件 1
Aaardio开发内嵌Electron浏览框放服务器上无法下载组件的解决办法 1