最优雅的Json模块 易语言源码
面向对象类中的两个关键方法都返回Json类型对象。
Json.I() '通过数组下标获取成员,并返回Json类型的对象(即返回与调用相同类型的对象)。
Json.K() '通过键名获取成员并返回Json类型的对象
意味着一行代码可以进入无限级的子对象,比如这个json:
{data:[ obj:{ code: 8 , data:[ msg:{ error: -8 ,errorData:{ text: '密码错误' , date:1451577600}} ] } ]}
只需要下面的代码就可以得到错误原因
错误原因 = Json.K(\\\"data\\\").I(0).K(\\\"data\\\").K(\\\"msg\\\").K(\\\"errorData\\\").K(\\\"文本\\\").获取文本()
当然,新版本也保留了传统的表达式方法获取对象,虽然不再推荐使用(表达式方法没有IDE提示,需要自己检查语法错误),但具体用法如下:
错误原因 = Json.X(\\\"data.data.msg.errorData.text\\\").Get text()
高效的
放弃了上一个版本的自研内核(虽然上一个版本的容错能力很惊人,但是执行效率低下,短期内没有精力去改进)而补充了Win32API中的JScript引擎内联汇编实现类似于Java的对象引用机制。 ,即 Json.I() / Json.K() / Json.X() 返回的对象实际上是调用对象绑定的同一个 Jscript 对象,因此解析和搜索相比之前可以得到很大的提升版本速度。
稳定
依靠对象引用机制,无论哪个子对象发生变化,都可以稳定同步更新。而且,该版本集成了JSONP跨域格式的解析功能,这样你再也不用担心这样的数据格式了。\\\"_callback1451577600({code: -10086,msg:'密码错误!'})\\\"。
其他注意事项
复制变量不能使用下面的方法直接复制(因为对象引用机制有引用计数,直接复制会导致计数异常并提前释放内存,从而导致程序崩溃)。
错误方法演示:
Json2=Json1
正确方法:
Json2=Json1.copy()
页:
[1]