为编程爱好者分享易语言教程源码的资源网
好用的代理IP,游戏必备 ____广告位招租____ 服务器99/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器
好用的代理IP,游戏必备 ____广告位招租____ 服务器低至38/年 ____广告位招租____ ____广告位招租____ 挂机,建站服务器

网站首页 > 易语言相关 > 易语言模块源码 正文

最优雅的Json模块2016-12-19

三叶资源网 2020-01-08 12:59:51 易语言模块源码 1446 ℃ 0 评论

面向对象

类中两大关键方法,均返回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()。 注:这样初始化的变量不支持多线程共享,只能被最先使用的线程使用。

@m199312

文件下载


来源:三叶资源网,欢迎分享,公众号:iisanye,(三叶资源网⑤群:21414575

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

百度站内搜索
关注微信公众号
三叶资源网⑤群:三叶资源网⑤群

网站分类
随机tag
登录注册实现阿里云oss分片上传微博降权彩虹秒赞网文件拖拽路由器换IP新浪微博蚁群算法内存百度API抗锯齿实时监控BitBlt汇编版Exdui界面WMF图片转BMP信号量对象模式易语言IDE界面数据库邮件群发
最新评论