精易论坛
标题: 【GitHub分享】一款非常优秀的JSON解析引擎,《Jsoncpp》黑猫易语言移植版。 [打印本页]
作者: 黑猫よ__ 时间: 2017-4-15 21:29
标题: 【GitHub分享】一款非常优秀的JSON解析引擎,《Jsoncpp》黑猫易语言移植版。
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,和xml类似,它基于ECMAScript规范的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得JSON成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率
《JSONCPP》是一个跨平台的开源库《https://github.com/open-source-parsers/jsoncpp》,用于C++处理JSON格式数据的开发包,
下面讲一下如何使用这个库对JSON格式数据进行反序列化。
例如:
{"key1": 100,"key2":true,"array":[{"key3":"1111"},{"key4":3.14}]}
代码:
变量名 | 类 型 | 静态 | 数组 | 备 注 |
json | 文本型 | | |
reader | JsonReader | | |
root | JsonValue | | |
key1 | 文本型 | | |
key2 | 逻辑型 | | |
key3 | 文本型 | | |
key4 | 双精度小数型 | | |
json =
#常量1
如果真 (reader.
从文本解析 (json, root
))

key1 = root.
At (“key1”).
asString ()
key2 = root.
At (“key2”).
asBool ()
key3 = root.
At (“array”).
Index (0
).
At (“key3”).
asString ()
key4 = root.
At (“array”).
Index (1
).
At (“key4”).
asDouble ()
调试输出 (key1, key2, key3, key4
)
例如: //对于多层结构,以及数组的解析 {"root":{"child":{"title":"Hello World"}},"array":[{"key":"1111"},{"key":"2222"}]}
代码:
变量名 | 类 型 | 静态 | 数组 | 备 注 |
json | 文本型 | | |
reader | JsonReader | | |
root | JsonValue | | |
title | 文本型 | | |
array | JsonValue | | |
i | 整数型 | | |
key | 文本型 | | |
json =
#常量2
如果真 (reader.
从文本解析 (json, root
))

title = root.
At (“root”).
At (“child”).
At (“title”).
asString ()
调试输出 (title
)

array = root.
At (“array”)
调试输出 (“数组成员数:”, array.
Length ())

计次循环首 (array.
Length (), i
)

key = array.
Index (i - 1
).
At (“key”).
asString ()

调试输出 (i, key
)
计次循环尾 ()
例如: //解析复杂JSON
json.txt
(17.47 KB, 下载次数: 26)
代码:
变量名 | 类 型 | 静态 | 数组 | 备 注 |
reader | JsonReader | | |
root | JsonValue | | |
data | JsonValue | | |
剧名 | 文本型 | | |
集名 | 文本型 | | |
stream | JsonValue | | |
i | 整数型 | | |
片源 | JsonValue | | |
分段文件 | JsonValue | | |
j | 整数型 | | |
原始地址 | 文本型 | | |
如果真 (reader.
从文件解析 (取运行目录 () +
“\json.txt”, root
))

data = root.
At (“data”)
剧名 = data.
At (“show”).
At (“title”).
asString ()
集名 = data.
At (“video”).
At (“title”).
asString ()
调试输出 (剧名, 集名
)
stream = data.
At (“stream”)

计次循环首 (stream.
Length (), i
)

片源 = stream.
Index (i - 1
) 

分段文件 = 片源.
At (“segs”) 

计次循环首 (分段文件.
Length (), j
)


原始地址 = 分段文件.
Index (i - 1
).
At (“cdn_url”).
asString ()


判断 (i = 1
)


调试输出 (“流畅 分段视频地址: ”, j, 原始地址
)


判断 (i = 2
)


调试输出 (“高清 分段视频地址: ”, j, 原始地址
)


判断 (i = 3
)


调试输出 (“超清 分段视频地址: ”, j, 原始地址
)













计次循环尾 ()
计次循环尾 ()
======================================================================================
源代码:
黑猫 - 易版(JSONCPP).rar
(597.51 KB, 下载次数: 496)
文件说明:
libjson.dll , 这个文件是用于将C++版的《JSONCPP》转换为易语言可调用版本的类库,源代码在"HeimaoJson"文件夹中,采用VS2013 专业版编写Json , 这个文件夹为编译好的《JSONCPP》静态库以及头文件夹Heimao Jsoncpp Library.e ,易版《JSONCPP》模块,编译即可使用,内附一个JSON解析的参考代码。
注: 如需转载本帖,请附著本帖地址!
补充内容 (2017-5-3 14:08):
支持库版本已更新: http://125.confly.eu.org/forum.php?mod=viewthread&tid=14015380
已支持生成JSON格式数据!
作者: cpu001071 时间: 2017-4-15 21:33
猫大的东西就是牛叉啊
作者: う网淅乄 时间: 2017-4-15 22:16
牛逼啊 之前搞浏览器也很牛逼
作者: 镇坛道德标杆 时间: 2017-4-15 22:32
啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊
作者: 剑齿虎233 时间: 2017-4-15 22:43
前排支持黑猫, 留名回去试试。 ejson挺好用 就是有大小限制。 与黑猫的这个调用类似。 挺方便的
作者: 1029823959 时间: 2017-4-16 07:53
有JAVA的吗
作者: sunmoonstar 时间: 2017-4-16 09:13
顶啊,下来试试看
作者: 沫茗 时间: 2017-4-16 11:31
只有解析吗?有写的话就好了
作者: 晴雯晴雯 时间: 2017-4-16 11:52
写的不错

作者: gongtengbsg 时间: 2017-4-17 02:28
看看吧!希望能用到!
作者: sunmoonstar 时间: 2017-4-17 09:04
这个可以有。。
作者: wdwlrz 时间: 2017-4-18 22:52
下载看看如何
作者: 银河世纪 时间: 2017-4-18 22:53
怎么不做支持库呢
作者: hfq1314 时间: 2017-4-19 07:18
看吧!希望能用到!
作者: JOKER♂少特 时间: 2017-4-19 12:16
不知道和你之前发的那个json解析支持库有什么区别
作者: 网上邻居007 时间: 2017-4-21 15:41
谢谢了 支持啊
作者: 小包子` 时间: 2017-4-22 08:09
膜拜大神啊
作者: agan 时间: 2017-4-22 18:47
和精易模块的json有什么区别么?
作者: 龍鼎软件开发 时间: 2017-4-23 01:13
感谢分享 ,没有精币了,路过领点币
作者: 师太莫慌 时间: 2017-4-23 11:59
大佬你好哇
作者: a2415419640 时间: 2017-4-24 17:17
还不懂各种js,现在下载下来再说,嘻嘻
作者: PingTu 时间: 2017-4-24 17:46
感谢分享,顶一下
作者: lyhuilin 时间: 2017-4-25 00:13
感谢分享,顶一下
作者: wanku001 时间: 2017-4-25 13:56
感谢分享!!!!!!!!!!!!!!!
作者: chen5310 时间: 2017-4-26 09:46
提示: 作者被禁止或删除 内容自动屏蔽
作者: rcbing 时间: 2017-4-26 23:17
给大佬请安
作者: 秋海明月 时间: 2017-4-28 15:09
支持开源~!感谢分享
作者: 情狼 时间: 2017-4-29 00:10
感谢分享 。作者牛B.
作者: titan200010 时间: 2017-4-30 08:29
谢谢,这个东西不错,下载你收藏
作者: 花猫的思念 时间: 2017-4-30 15:14
谢谢,这个东西不错,下载你收藏
作者: anner 时间: 2017-5-1 19:50
感谢分享,顶一下
作者: cy3158 时间: 2017-5-2 01:46
感谢分享!
作者: 牛X的孩子 时间: 2017-5-3 19:27
日常gayhub
作者: yijay 时间: 2017-5-4 00:43
非常感谢黑猫,刚好在做这个
作者: nauy2015 时间: 2017-5-4 10:54
感谢分享!
作者: 1070708268 时间: 2017-5-6 22:00
支持开源~!感谢分享
作者: E小友 时间: 2017-5-7 18:16







作者: waitopen 时间: 2017-5-11 17:14
非常不错,感谢分享
作者: 1192366023 时间: 2017-5-15 16:08
谢谢楼主!!学习学习
作者: lyw1989 时间: 2017-5-19 22:22
不错学习了
作者: 学习交流111 时间: 2017-5-24 19:48
可以
作者: o0595o 时间: 2017-5-28 23:51
有点晕车,再解释一下
作者: Else 时间: 2017-8-21 09:46
亲测100*56的解析填入列表框,速度远低于类_json
作者: liuqiqi87 时间: 2017-11-29 10:01
removeIndex 这个函数 多次使用 会出现删除不了的问题
作者: adisok 时间: 2017-12-13 22:02
提示: 作者被禁止或删除 内容自动屏蔽
作者: Xw‘小威 时间: 2018-3-24 19:39
我们这边一直在用这个数据格式的文件。
作者: qq420345437 时间: 2018-4-9 20:14
感谢分享,很给力!~支持开源~
作者: UNeverKnownHMIL 时间: 2018-9-24 22:52
6666666666666666666666
作者: 八八就发 时间: 2019-3-6 17:19
搞来看看,现在正在玩Json。
作者: 闪记充 时间: 2019-5-26 20:23
猫老大才是王者
作者: NewLemon 时间: 2020-3-6 17:59
本帖最后由 NewLemon 于 2020-3-6 18:02 编辑
对于不规正json解析不了 [{123,23123,123,123,123,123,123,132,},{1,1,1,1},{123,123}],这样的xx完全解析不了。另外精易模块JSON可以解析,速度相当慢。web客户支持库可以解析,但是获取不到xx。其他JSON都测试全部取货不到
作者: zhuchiabc 时间: 2020-3-14 13:47
2个程序,一样的代码, root.Add (“data”, shuzu) root.toStyledString () 调试输出一个为NULL,一个是JSON文本,这BUG可真....
欢迎光临 精易论坛 (https://125.confly.eu.org/) |
Powered by Discuz! X3.4 |