开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 767|回复: 7
收起左侧

[已解决] json解析问题

 关闭 [复制链接]
结帖率:84% (52/62)
发表于 2021-10-14 21:18:20 | 显示全部楼层 |阅读模式   湖南省益阳市
12精币
[{"ID":"1001","age":"24","profession":"刺客"},{"ID":"10025","age":"18","profession":"刺客"},{"ID":"998855","age":"19","profession":"法师"}]

上面这段JSON,这么操作 才能 根据 ID 快速查找出 profession这个值来? 数据大概有1M多,遍历的方式太慢了,可以通过JSON直接取值的方式读出来吗?不能使用正则, 请大神赐教、、





最佳答案

查看完整内容

封装了一个寻找文本的功能,因为寻找文本方式速度是非常快的,一秒钟能寻找3千万行左右的速度,就可以极快的定位出id索引了,之后就可以直接快速定位到具体数组索引上 由于你提供的json数据不是完整的,可能不一定适应你实际的,只是一个例子,如果不适用,请自行变通更改代码 [e=1].版本 2 .支持库 spec .程序集 程序集1 .子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行 .局部变量 json, 类_json .局部变量 数据 ...

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳

结帖率:100% (53/53)

签到天数: 1 天

发表于 2021-10-14 21:18:21 | 显示全部楼层   福建省宁德市
封装了一个寻找文本的功能,因为寻找文本方式速度是非常快的,一秒钟能寻找3千万行左右的速度,就可以极快的定位出id索引了,之后就可以直接快速定位到具体数组索引上
由于你提供的json数据不是完整的,可能不一定适应你实际的,只是一个例子,如果不适用,请自行变通更改代码
  
窗口程序集名保 留  保 留备 注
程序集1   
子程序名返回值类型公开备 注
_启动子程序整数型 本子程序在程序启动后最先执行
变量名类 型静态数组备 注
json类_json 
数据文本文本型 
欲寻找的id文本型 
数组成员数整数型 
i整数型 
id索引整数型 
' [{"ID":"1001","age":"24","profession":"刺客"},{"ID":"10025","age":"18","profession":"刺客"},{"ID":"998855","age":"19","profession":"法师"}]
json.解析 ( #json数据 )
数据文本 = json.取数据文本 ()  ' 这样可以确保json没有换行符和空格
欲寻找的id = “998855”
id索引 = json取索引内部 (数据文本, 欲寻找的id)
调试输出 (json.取通用属性 (“[”到文本 (id索引)“].ID”))
调试输出 (json.取通用属性 (“[”到文本 (id索引)“].age”))
调试输出 (json.取通用属性 (“[”到文本 (id索引)“].profession”))
返回 (0)  ' 可以根据您的需要返回任意数值
子程序名返回值类型公开备 注
json取索引内部整数型 
参数名类 型参考可空数组备 注
json文本文本型
id文本型
变量名类 型静态数组备 注
返回位置整数型 
属性名文本型 
索引整数型 
属性值文本型 
属性名长度整数型 
属性名 = #引号“ID”#引号“:”#引号
属性名长度 = 取文本长度 (属性名)
判断循环首 ()
返回位置 = 寻找文本 (json文本, 属性名, 返回位置 + 1, )
如果真 (返回位置 = -1)
跳出循环 ()

索引 = 索引 + 1
属性值 = 取文本中间 (json文本, 返回位置 + 属性名长度, 取文本长度 (id))
' 调试输出 (属性值)
如果真 (属性值 = id)
返回 (索引 - 1)

判断循环尾 ()
返回 (-1)


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

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

结帖率:88% (29/33)
发表于 2021-10-14 22:35:20 | 显示全部楼层   湖北省襄阳市
用取出中间文本呢?
回复

使用道具 举报

结帖率:92% (24/26)

签到天数: 2 天

发表于 2021-10-14 22:35:57 | 显示全部楼层   江苏省苏州市
这个貌似不行吧,   你取值总要通过对比才能知道是从哪一段取 ,   除非你的ID 就是数组的下标,  否则  我估计你说的方法是不行的  
回复

使用道具 举报

结帖率:100% (5/5)
发表于 2021-10-14 22:39:07 | 显示全部楼层   广西壮族自治区南宁市
查找字节集,截取ID和之后的一段文本,再取profession的值, 试试看行不行~
回复

使用道具 举报

结帖率:84% (52/62)

签到天数: 2 天

 楼主| 发表于 2021-10-14 23:49:53 | 显示全部楼层   湖南省益阳市
aqwvwv 发表于 2021-10-14 23:13
封装了一个寻找文本的功能,因为寻找文本方式速度是非常快的,一秒钟能寻找3千万行左右的速度,就可以极快 ...

为什么我用你的测试,速度1秒最多3个cha询结果呢? 是不是哪里搞错了,时间主要消耗在检索ID上面了
回复

使用道具 举报

结帖率:100% (3/3)
发表于 2021-10-15 10:13:53 | 显示全部楼层   山东省济南市
E2EE,存取列表配合存取cha询器
回复

使用道具 举报

签到天数: 15 天

发表于 2021-10-15 11:56:34 | 显示全部楼层   河北省石家庄市
  
子程序名返回值类型公开备 注
_启动子程序整数型 本子程序在程序启动后最先执行
变量名类 型静态数组备 注
列表存取列表 
返回列表存取列表 
a  
a = 取启动时间 ()
列表.从JSON载入 ( #常量1, , )
列表.cha询 (返回列表, , “ID='998855'”, )
调试输出 (返回列表.取文本 (1, “profession”))


i支持库列表   支持库注释   
e2eeE2EE互联网服务器套件
spec特殊功能支持库


我记得回答过这个问题,就是你吧,json内容都一样,用e2ee 很快,如果不想用,其实正则和 截取文件也不错啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表