精易论坛

标题: 【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文本型 
readerJsonReader解析引擎
rootJsonValue根对象
key1文本型 
key2逻辑型 
key3文本型 
key4双精度小数型 
json = #常量1
' {"key1": 100,"key2":true,"array":[{"key3":"1111"},{"key4":3.14}]}
如果真 (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)


i支持库列表   支持库注释   
spec特殊功能支持库

例如:      //对于多层结构,以及数组的解析      {"root":{"child":{"title":"Hello World"}},"array":[{"key":"1111"},{"key":"2222"}]}
代码:
  
子程序名返回值类型公开备 注
_临时子程序  
变量名类 型静态数组备 注
json文本型 
readerJsonReader解析引擎
rootJsonValue根对象
title文本型 
arrayJsonValue 
i整数型 
key文本型 
json = #常量2
' {"root":{"child":{"title":"Hello World"}},"array":[{"key":"1111"},{"key":"2222"}]}
如果真 (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 ()
' 数组下标从0开始
调试输出 (i, key)
计次循环尾 ()


i支持库列表   支持库注释   
spec特殊功能支持库

例如:      //解析复杂JSON       json.txt (17.47 KB, 下载次数: 26)
代码:
  
子程序名返回值类型公开备 注
__测试_解析优酷视频源_ '测试代码
变量名类 型静态数组备 注
readerJsonReader 
rootJsonValue 
dataJsonValue 
剧名文本型 
集名文本型 
streamJsonValue 
i整数型 
片源JsonValue 
分段文件JsonValue 
j整数型 
原始地址文本型 
' 测试json 地址
' https://ups.youku.com/ups/get.json?vid=XNjE2OTM1NTg0&ccode=0401&client_ip=192.168.1.1&utid=Op9zEU%2Ft1XUCAXFZe9aDvQ6a&client_ts=1492074201%E2%80%9D,%20%E2%80%9CGET
如果真 (reader.从文件解析 (取运行目录 ()“\json.txt”, root))
data = root.At (“data”)
剧名 = data.At (“show”).At (“title”).asString ()
集名 = data.At (“video”).At (“title”).asString ()
调试输出 (剧名, 集名)
stream = data.At (“stream”)  ' 数组
' youku 通常情况下, 0 = 流畅,1 = 高清, 2 = 超清
计次循环首 (stream.Length (), i)
片源 = stream.Index (i - 1)  ' 数组下标从0开始
分段文件 = 片源.At (“segs”)  ' 数组
计次循环首 (分段文件.Length (), j)
原始地址 = 分段文件.Index (i - 1).At (“cdn_url”).asString ()
判断 (i = 1)
调试输出 (“流畅 分段视频地址: ”, j, 原始地址)
判断 (i = 2)
调试输出 (“高清 分段视频地址: ”, j, 原始地址)
判断 (i = 3)
调试输出 (“超清 分段视频地址: ”, j, 原始地址)



计次循环尾 ()
计次循环尾 ()


i支持库列表   支持库注释   
spec特殊功能支持库


======================================================================================
源代码: 黑猫 - 易版(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