易语言精益模块json_易语言 史诗级Json处理 烁_Json模块!!!!

大家好,我是键盘上的魔手

* “************************”

* “**

欢迎使用烁Json模块 **”

* “** 作者:键盘上的魔手 **”

* “**  微信号:codervip  **”

* “**

商业合作请加QQ   **”

* “**   QQ:2052404477    **”

* “**   模块版本:2.0    **”

*

“************************”

发现BUG,在公众号中反馈,将有现金奉送,同一个BUG,只发放给第一个提交者

发现功能缺失,我会根据刚需,在后续的模块更新中加上去!

烁_Json模块的诞生,完全是意外。

只是个意外。

产生背景:

最近在做易语言的项目,和后台的接口交互,都是json,我下载了精易模块,唉,发现里面竟然还是有一个类_JSON

的类!!!!嘿嘿,我果断的在程序当中引用

介于项目和api之间的交互是循环级别的(就是返回的json数据是一个大数组,需要循环),在循环当中,把类_JSON的逻辑写好,嘿嘿,运行!!!

~~~~!!!!!

~~~~开始运行

~~~~界面弹出

~~~~调试信息显示

~~~~蹦,界面消失了!!!!!!!

~~~~程序竟然结束了!!!!!!!竟然结束了!!!!!结束了!!!!!

我的数据也不大啊,大概就是200个成员的数组啊!!!!!

哎呀我去!!!!这易语言还没有json这样的类型!!!!这个可就苦逼了!!!!

于是乎,一个专业级别解决Json问题的模块就此诞生.........

使用文档正在编写,关注公众号:codervip,第一时间公布使用文档!

该模块将持续更新,需要什么功能请在公众号当中留言,我会采纳刚需的需求进行编写模块!

发现BUG的,在公众号截图留言,经验证确实存在的,我会给予打赏优先发现者!

下载地址:传送门

面向对象 类中两大关键方法,均返回Json类型对象。 Json.I() '以数组下标方式获得成员,返回一个Json类型的对象(即返回一个和调用类型一样的对象)。 Json.K() '以键名方式获得成员,返回一个Json类型的对象 意味着一句代码可以无限层次进入子对象中,比如这样的json中: {data:[ obj:{ code: 8 , data:[ msg:{ error :-8 ,errorData:{ text: 'Incorrect password' , date:1451577600}} ] } ]} 只需如下代码便可获得错误原因 错误原因=Json.K("data").I(0).K("data").K("msg").K("errorData").K("text").取文本() 当然新的版本还保留了传统的表达式方式取得对象,虽然已不推荐使用(表达式方式没有IDE提示,而且需要自己检查语法错误等缺点),具体用法如下: 错误原因=Json.X("data[0].data.msg.errorData.text").取文本() 高效 弃用上一版的自研发内核(虽然上一版容错能力惊人,但执行效率较低,短期内没有精力改进)转采用Win32API中的JScript引擎辅以内联汇编实现了类似于Java的对象引用机制,即 Json.I()  /  Json.K()  /  Json.X()   所返回的对象实际上和调用对象其实是绑定的同一个Jscript对象,因此相比上个版本可大幅提高解析和查找速度。 稳定 依托于对象引用机制,无论对哪个子对象进行改变,都能稳定同步更新,而且本版集成了JSONP跨域格式的解析功能,再也不用为这样的数据格式伤脑筋了“_callback1451577600({code:-10086,msg:'密码错误!'})”。 其他注意事项 复制变量不可以使用如下方式直接复制(因对象引用机制有着引用数计次,直接复制会导致计次异常而提前释放内存继而引发程序崩溃)。 错误的方法演示: Json2=Json1 正确做法: Json2=Json1.复制() ---------------关于多线程----------------- 模块默认为多线程方式初始化的COM库,值得注意的是精易模块中有很多命令都会卸载多线程初始化(比如正则、网页访问等都会调用卸载CoUninitialize()),他们会造成程序崩溃,如果要兼容精易模块请不要调用本方法(多线程初始化COM() ),并在每个线程首次使用Json类的方法前加上  单线程初始化COM()。 注:这样初始化的变量不支持多线程共享,只能被最先使用的线程使用。
本此版本三大特点:《 优雅 》、《 面向对象 》、《 高效 》、《 稳定 》 优雅 (生成Json有着媲美甚至超越JScript的体验) 如果要生成一段这样的JSON文本: {    "开发商信息":    {        "公司名":    "异编软件",        "网址":    "http://www.ybrj.net "    },    "鸣谢":    [        {            "公司名":    "云外归鸟工作室",            "网址":    "http://www.ywgn.net "        },        {            "公司名":    "易语言软件开发有限公司",            "网址":    "http://www.eyuyan.com "        }    ]} JScript方式(11行代码):var json={};json.开发商信息={};json.开发商信息.公司名="异编软件";json.开发商信息.网址="http://www.ybrj.net ";json.鸣谢=[];json.鸣谢[0]={};josn.鸣谢[0].公司名="云外归鸟工作室";josn.鸣谢[0].网址="http://www.ywgn.net ";json.鸣谢[1]={};josn.鸣谢[1].公司名="易语言软件开发有限公司";josn.鸣谢[1].网址="http://www.eyuyan.com "; 传统的方式(21行代码): json.置项目值("","{}")json.插入项目("","开发商信息")json.置项目值("开发商信息","{}") json.插入项目("开发商信息 "," 公司名")json.置项目值("开发商信息 . 公司名", "异编软件")json.插入项目("开发商信息 ","网址 ")json.置项目值("开发商信息 .网址 ","http://www.ybrj.net ")json.插入项目("","鸣谢")json.置项目值("鸣谢 ","[]")json.插入项目("鸣谢","0")json.置项目值("鸣谢 [0]","{}")json.插入项目("鸣谢[0]","公司名") json.置项目值("鸣谢 [0].公司名","云外归鸟工作室")json.插入项目("鸣谢[0]","网址") json.置项目值("鸣谢 [0].网址 ","http://www.ywgn.net ")json.插入项目("鸣谢","1")json.置项目值("鸣谢 [1]","{}")json.插入项目("鸣谢[1","公司名") json.置项目值("鸣谢 [1].公司名","易语言软件开发有限公司")json.插入项目("鸣谢[1]","网址") json.置项目值("鸣谢 [1].网址 ","http://www.eyuyan.com ") Json模块的方式(6行代码): json.K("开发商信息").K("公司名").置文本("异编软件")json.K("开发商信息").K("网址").置文本("http://www.ybrj.net ")json.K("鸣谢").I(0).K("公司名").置文本("云外归鸟工作室")json.K("鸣谢").I(0).K("网址").置文本("http://www.ywgn.net ")json.K("鸣谢").I(1).K("公司名").置文本("易语言软件开发有限公司")json.K("鸣谢").I(1).K("网址").置文本("http://www.eyuyan.com ") 面向对象 类中两大关键方法,均返回Json类型对象。 Json.I() '以数组下标方式获得成员,返回一个Json类型的对象(即返回一个和调用类型一样的对象)。 Json.K()'以键名方式获得成员,返回一个Json类型的对象              意味着一句代码可以无限层次进入子对象中,比如这样的json中: {data:[ obj:{ code: 8 , data:[ msg:{ error :-8 ,errorData:{ text: 'Incorrect password' , date:1451577600}} ] } ]} 只需如下代码便可获得 错误原因 错误原因=Json.K("data").I(0).K("data").K("msg").K("errorData").K("text").取文本() 当然新的版本还保留了传统的表达式方式取得对象,虽然已不推荐使用(表达式方式没有IDE提示,而且需要自己检查语法错误等缺点),具体用法如下: 错误原因=Json.X(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值