找回密码
 立即注册
易语言编程 2025-04-15 0 0star收藏 版权: . 保留作者信息 . 禁止商业使用 . 禁止修改作品
模块名称:Json类模块
作者:ybrj.net
版本:1.1
Json.I(下标) '以下标方式取得数组成员
Json.K(键名) '以键名方式取得对象成员
Json.X(表达式)'旧版表达式取得成员
'以上所有方法返回的结果都是引用变量
'如果要使用独立变量请使用Json.复制()
--------------------------------
复制对象不可以如下方式直接复制:
json2=json1
正确方式应该为:
json2=json1.复制()
@备注:
Json.I() / .K() / .X() / .复制()
都是返回一个Json类型的对象
  不同的是.I() / .K() / .X() 返回的是引用类型变量,也就是说返回的变量实际上用的数据和调用对象是一份。
  而.复制()返回的是一个独立对象,已经从调用对象身上完整复制了一份,因此,使用.复制()复制出来的对象可以与调用对象同时被多个线程使用,而上三种返回的对象不能同时被多个线程使用。
------------------------------
.版本 2
.子程序 单线程初始化COM, 逻辑型, 公开, 成功返回真,已被初始化返回假,指定某个线程中创建的COM对象只能单线程方式使用。
.子程序 多线程初始化COM, 逻辑型, 公开, 成功返回真,已被初始化返回假,本方法为默认方式,已自动调用,值得注意的是精易模块中有很多命令都会卸载多线程初始化(比如正则、网页访问等都会调用卸载CoUninitialize),他们会造成程序崩溃,如果要兼容精易模块请不要调用本方法,并在每个线程首次使用Json类的方法前加上 单线程初始化COM()。
.子程序 线程_启动, 整数型, 公开, 成功返回线程句柄,失败返回0
.参数 要启动的子程序, 子程序指针
.参数 要传去子程序的参数, 整数型, 可空, 往子程序里面传递一个整数型的参数
.参数 线程ID, 整数型, 参考 可空, 请提供一个整数型的变量,用于存放新创建的线程ID。
.子程序 转义JS文本, 文本型, 公开, 文本_JSON转义()  GBK编码JSON转义,成功返回转义文本如:“"中G:\r\n你好!"”,失败返回空“”
.参数 原文本, 文本型, , 本方法只转义json必须转义的部分,如果要完整转义请使用   文本_转义()
.程序集 Json, , 公开, JSON操作类。本类中备注前带“!”的方法为有隐患(或者可解决隐患)方法,请谨遵说明使用。本类内部使用了COM对象,可调用CoInitializeEx(0,0)保证多线程共享。
.子程序 I, Json, 公开, !通过【数组下标】进一层取得成员对象。本方法取出的对象其实为父对象的引用,意味着本对象改变或者父对象改变都会互相影响
.参数 下标位置, 整数型, , 填写数组的下标位置,从0开始
.子程序 K, Json, 公开, !通过【键名】进一层取得对象的成员对象。本方法取出的对象其实为父对象的引用,意味着本对象改变或者父对象改变都会互相影响
.参数 键, 文本型
.子程序 X, Json, 公开, !推荐不使用此方法而是使用 I() K() 方法。通过旧版表达式的方式获得成员对象。此方法产生的对象有3个缺陷:1.如果表达式指向的对象不存在可能造成此分支下无法自动创建成员;2.自行检查表达式疏漏时会造成此分支下面的对象都不能使用。3.无法逆推获得父对象(虽然不推荐使用)
.参数 表达式, 文本型, , 请执行保证表达式正确,否则可能造成此分支下面的对象都不能使用!另外,如果表达式指向的对象不存在可能造成此分支下无法自动创建成员;
.子程序 父对象, Json, 公开, !注意:此方法存在安全隐患,如果父对象已经销毁的时候,本方法可能因为复制无效的内存数据导致崩溃。返回当前对象的父对象的引用,如果已是顶级对象,则返回自身的引用
.子程序 复制, Json, 公开, !注意:复制变量必须调用本方法!不可直接使用 Json2=Json1,会导致引用计数出错而程序崩溃。正确做法:Json2=Json1.复制()。复制出来的变量与原变量完全无关,任何改变不会影响原对象。
.子程序 取类型, 文本型, 公开, 取出当前对象的类型。包括:{文本型,数值型,逻辑型,对象,数组,无效,未知,null};其中“null”为JSON标准值,而无效则代表变量没有初始化,“未知”为无法识别数据。
.子程序 取逻辑, 逻辑型, 公开, 将当前对象作为逻辑值取出,在非逻辑值时,如果为数值则0为假,其他为真,如果为其他类型不存在返回假,否则返回真。
.子程序 取数值, 双精度小数型, 公开, 将当前对象作为数值取出。如果本对象不存在返回0。如果本对象为逻辑型真返回-1,假返回0
.子程序 取所有键, 整数型, 公开, 返回值:成功返回键数量,失败返回0。*对于JSON对象我们无法通过数组下标进行遍历所有成员,此时可调用本方法返回一个JSON对象的成员所有成员键名。
.参数 返回键名数组, 文本型, 可空 数组, 请提供一个 文本型 数组 变量,用于接收键名数组。
.子程序 取文本, 文本型, 公开, 将当前对象作为文本值取出。如果为对象或者数组则转换成JSON文本
.子程序 是否顶级, 逻辑型, 公开, 判断只是是否为顶级对象,如果是,返回真,否则返回假。
.子程序 置代码, 逻辑型, 公开, 将当前对象的值设置成JSON等代码解析的结果,成功返回真,失败返回假。
.参数 JS代码, 文本型, , 兼容JS语法的值,可以为JSON/JSONP/ 或者js基本数据类型,如:文本(需自行转义) / 数值 / true / null / 对象 / 数组。
.参数 跨域格式, 逻辑型, 可空, 可空,如果你提供的内容为这种格式:“_callbackXX({code:0,msg:'XX'})”,请填 真,而普通JSON文本请留空或填假。
.子程序 置逻辑, 逻辑型, 公开, 将当前对象的值设置逻辑值。
.参数 值, 逻辑型
.子程序 置数值, 逻辑型, 公开, 将当前对象的值设置成数值。
.参数 值, 双精度小数型
.子程序 置文本, 逻辑型, 公开, 将当前对象的值设置成文本。
.参数 值, 文本型
.DLL命令 CoInitialize, 整数型, "ole32", "CoInitialize", 公开, 初始化com库,选择单线程方式创建COM对象。成功返回0,否则代表在此之前已调用初始化。
    .参数 pvReserved, 整数型, , 0
.DLL命令 CoInitializeEx, 整数型, "ole32", "CoInitializeEx", 公开, 初始化com库,可以选择单线程方式还是多线程方式。成功返回0,否则代表在此之前已调用初始化。
    .参数 pvReserved, 整数型, , 0
    .参数 dwCoInit, 整数型, , 0多线程方式,1单线程方式
.DLL命令 CoUninitialize, 整数型, "ole32.dll", "CoUninitialize", 公开, 卸载com库初始化。
.DLL命令 拷贝内存_, 整数型, "kernel32", "RtlMoveMemory", 公开, RtlMoveMemory
    .参数 目标数据地址, 整数型, , lpvDest
    .参数 源数据, 整数型, , lpvSource
    .参数 尺寸, 整数型, , cbCopy
.DLL命令 拷贝文本_, 整数型, "kernel32", "RtlMoveMemory", 公开, RtlMoveMemory
    .参数 目标数据地址, 整数型, , lpvDest
    .参数 源字节集数据, 文本型, , lpvSource
    .参数 尺寸, 整数型, , cbCopy
.DLL命令 拷贝字节集_, 整数型, "kernel32", "RtlMoveMemory", 公开, RtlMoveMemory
    .参数 目标数据地址, 整数型, , lpvDest
    .参数 源字节集数据, 字节集, , lpvSource
    .参数 尺寸, 整数型, , cbCopy
.DLL命令 申请内存_, 整数型, "kernel32.dll", "GlobalAlloc", 公开, 申请在堆中分配一块内存,成功返回值是一个指向内存块指针或内存块句柄,否则返回0.
    .参数 uFlags, 整数型, , 可留0,或以下值:#GMEM_MOVEABLE  /  #GMEM_FIXED /   #GMEM_ZEROINIT
    .参数 dwBytes, 整数型, , 以字节为单位的内存的大小
.DLL命令 释放内存_, 整数型, "kernel32.dll", "GlobalFree", 公开, 申请在堆中分配一块内存,成功返回值是一个指向内存块指针或内存块句柄,否则返回0.
    .参数 hMem, 整数型, , 是由 GlobalAlloc 或者 GlobalReAlloc 函数返回的
.DLL命令 原子变量加法_, 整数型, "kernel32", "InterlockedExchangeAdd", 公开, 原子性加法,成功返回原值
    .参数 变量地址, 整数型, , 只能提供整数型变量
    .参数 相加的值, 整数型, , 如果为负数则等于减法
.DLL命令 原子变量交换_, 整数型, "kernel32.dll", "InterlockedCompareExchange", 公开, 果第三个参数与第一个参数指向的值相同,那么用第二个参数取代第一个参数指向的值。函数返回值为原始值。
    .参数 变量地址, 整数型, , 欲判断的变量,只能提供整数型变量
    .参数 用作取代的值, 整数型, , 用作取代的值
    .参数 用于判断的值, 整数型, , 用于判断的值
.常量 字符码_双引号, "34", 公开, \"
.常量 字符码_斜杠, "92", 公开, \\

16331355666[下载].rar



上一篇:易语言模块 字典1.2.ec
下一篇:易语言模块 [神2也教你学E] - 可执行动态载入&输出其他文件模块.ec