开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 188|回复: 6
收起左侧

[已解决] json数组数据求处理

 关闭 [复制链接]
结帖率:99% (147/149)
发表于 11 小时前 | 显示全部楼层 |阅读模式   重庆市重庆市
200精币
json数组数据求处理,如下,比如一下费用是2881,我现在我希望扣除一个500的费用,优先扣除自费项目和应收金额高的。剩下的返回2881-500的费用。
[{"项目类别":"手术","保险类别":"自费","项目名称":"种植体植入费(单颗)","数次":1.0,"标准单价":1358.0,"应收金额":1358.0},{"项目类别":"检查","保险类别":"乙类","项目名称":"计算机体层成像(CT)平扫-口腔颌面锥形束CT(CBCT)(扩展)","数次":2.0,"标准单价":230.0,"应收金额":460.0},{"项目类别":"材料","保险类别":"自费","项目名称":"种植态美瑞瓷","数次":1.0,"标准单价":100.0,"应收金额":100.0},{"项目类别":"手术","保险类别":"自费","项目名称":"端午种植体植入费(单颗)","数次":1.0,"标准单价":963.0,"应收金额":963.0}]
比如这个json,我就应该扣除自费,应收1358这条,返回数次 1358-500/1358=0.63次,应收13580-500=858。 返回的json就是
[{"项目类别":"手术","保险类别":"自费","项目名称":"种植体植入费(单颗)","数次":0.63,"标准单价":1358.0,"应收金额":858.0},{"项目类别":"检查","保险类别":"乙类","项目名称":"计算机体层成像(CT)平扫-口腔颌面锥形束CT(CBCT)(扩展)","数次":2.0,"标准单价":230.0,"应收金额":460.0},{"项目类别":"材料","保险类别":"自费","项目名称":"种植态美瑞瓷","数次":1.0,"标准单价":100.0,"应收金额":100.0},{"项目类别":"手术","保险类别":"自费","项目名称":"端午种植体植入费(单颗)","数次":1.0,"标准单价":963.0,"应收金额":963.0}]
假如要扣费2000,扣掉1358后继续扣除下一个自费的,没有就扣其他类的。让豆包写,豆包逻辑倒是对的,就是自己编了2个函数[color=rgba(0, 0, 0, 0.85)][backcolor=rgba(0, 0, 0, 0.04)]数组_自定义排序和[color=rgba(0, 0, 0, 0.85)][backcolor=rgba(0, 0, 0, 0.04)]JSON_解析数组,让他写函数原始代码也不对。

最佳答案

查看完整内容

.版本 2 .支持库 spec .子程序 Json处理, 整数型, , 本子程序在程序启动后最先执行 .局部变量 输入_Json, zyJsonDocument .局部变量 输出_Json, zyJsonDocument .局部变量 j, 整数型 .局部变量 i, 整数型 .局部变量 临时值, zyJsonValue .局部变量 子_Json, zyJsonValue, , "0" .局部变量 临_Json, zyJsonValue .局部变量 优先级1, 整数型 .局部变量 优先级2, 整数型 .局部变量 剩余扣除, 双精度小数型 .局部变量 应收金额, 双精 ...

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值
结帖率:80% (12/15)

签到天数: 9 天

发表于 11 小时前 | 显示全部楼层   湖北省武汉市
.版本 2
.支持库 spec

.子程序 Json处理, 整数型, , 本子程序在程序启动后最先执行
.局部变量 输入_Json, zyJsonDocument
.局部变量 输出_Json, zyJsonDocument
.局部变量 j, 整数型
.局部变量 i, 整数型
.局部变量 临时值, zyJsonValue
.局部变量 子_Json, zyJsonValue, , "0"
.局部变量 临_Json, zyJsonValue
.局部变量 优先级1, 整数型
.局部变量 优先级2, 整数型
.局部变量 剩余扣除, 双精度小数型
.局部变量 应收金额, 双精度小数型
.局部变量 标准单价, 双精度小数型

输入_Json.解析 (#原始_Json, , , )

清除数组 (子_Json)
.计次循环首 (输入_Json.取成员数 (), i)
    临_Json = 输入_Json.取成员 (, i - 1)
    加入成员 (子_Json, 临_Json)
.计次循环尾 ()

.计次循环首 (取数组成员数 (子_Json), i)
    .计次循环首 (取数组成员数 (子_Json) - i, j)
        优先级1 = 选择 (子_Json [j].取文本 (“保险类别”, ) = “自费”, 1, 0)
        优先级2 = 选择 (子_Json [j + 1].取文本 (“保险类别”, ) = “自费”, 1, 0)
        .如果真 (优先级1 < 优先级2 或 优先级1 = 优先级2 且 子_Json [j].取双精度 (“应收金额”) < 子_Json [j + 1].取双精度 (“应收金额”))
            临时值 = 子_Json [j]
            子_Json [j] = 子_Json [j + 1]
            子_Json [j + 1] = 临时值
        .如果真结束

    .计次循环尾 ()
.计次循环尾 ()
剩余扣除 = 500
.计次循环首 (取数组成员数 (子_Json), i)
    .如果真 (剩余扣除 ≤ 0)
        跳出循环 ()
    .如果真结束
    应收金额 = 子_Json .取双精度 (“应收金额”)
    标准单价 = 子_Json .取双精度 (“标准单价”)

    .如果真 (应收金额 ≤ 0)
        到循环尾 ()
    .如果真结束

    .如果 (应收金额 ≥ 剩余扣除)
        应收金额 = 应收金额 - 剩余扣除
        子_Json .置双精度 (“应收金额”, 四舍五入 (应收金额, 2))
        .如果真 (标准单价 > 0)
            子_Json .置双精度 (“数次”, 四舍五入 (应收金额 ÷ 标准单价, 2))
        .如果真结束
        剩余扣除 = 0
    .否则
        剩余扣除 = 剩余扣除 - 应收金额
        子_Json .置双精度 (“应收金额”, 0)
        子_Json .置双精度 (“数次”, 0)
    .如果结束

.计次循环尾 ()
输出_Json.创建 (, , , )
.计次循环首 (取数组成员数 (子_Json), i)
    输出_Json.置成员 (, i - 1, 子_Json )
.计次循环尾 ()
调试输出 (输出_Json.到文本 (, , , ))
返回 (0)


补充内容 (2026-6-11 13:16):
[{
    "项目类别": "手术",
    "保险类别": "自费",
    "项目名称": "种植体植入费(单颗)",
    "数次": 0.63,
    "标准单价": 1358,
    "应收金额": 858
}, {
    "项...
回复

使用道具 举报

结帖率:100% (12/12)

签到天数: 9 天

发表于 11 小时前 | 显示全部楼层   江苏省盐城市
  
子程序名返回值类型公开备 注
功能_Json解析  
参数名类 型参考可空数组备 注
参_Json文本文本型
参_扣除费用整数型
参_返回次数小数型
参_返回费用双精度小数型
变量名类 型静态数组备 注
局_Json类_json 
局_收取金额双精度小数型 
局_计次整数型 
局_Json.解析 (参_Json文本, , )
计次循环首 (局_Json.成员数 (), 局_计次)
局_收取金额 = 局_收取金额 + 到数值 (局_Json.取通用属性 (“[”到文本 (局_计次 - 1)“].应收金额”, ))
计次循环尾 ()
参_返回费用 = 局_收取金额 - 参_扣除费用
参_返回次数 = 参_返回费用 ÷ 局_收取金额
调试输出 (局_收取金额, 参_返回费用, 参_返回次数)


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



看看对不对

评分

参与人数 1好评 +1 精币 +5 收起 理由
53770zhang + 1 + 5 谢谢

查看全部评分

回复

使用道具 举报

结帖率:99% (147/149)

签到天数: 3 天

 楼主| 发表于 9 小时前 | 显示全部楼层   重庆市重庆市
白橙 发表于 2026-6-11 13:16
.版本 2
.支持库 spec

对的对的,就是这个意思。但是不知道是不是zyjson的版本不对,我执行的时候。 应收金额 = 子_Json .取双精度 (“应收金额”) 需要改为  应收金额 = 子_Json .取双精度 (“应收金额”)

输出_Json.置成员 (, i - 1, 子_Json )这里值也不对。
回复

使用道具 举报

结帖率:99% (147/149)

签到天数: 3 天

 楼主| 发表于 9 小时前 | 显示全部楼层   重庆市重庆市
但是不知道是不是zyjson的版本不对,我执行的时候。 应收金额 = 子_Json .取双精度 (“应收金额”) 需要改为  应收金额 = 子_Json[i] .取双精度 (“应收金额”)

输出_Json.置成员 (, i - 1, 子_Json )这里值也不对。我在研究下
回复

使用道具 举报

结帖率:80% (12/15)

签到天数: 9 天

发表于 8 小时前 | 显示全部楼层   湖北省武汉市
53770zhang 发表于 2026-6-11 14:16
但是不知道是不是zyjson的版本不对,我执行的时候。 应收金额 = 子_Json .取双精度 (“应收金额”) 需要改 ...

zyJson4.0.8.ec
回复

使用道具 举报

结帖率:80% (12/15)

签到天数: 9 天

发表于 8 小时前 | 显示全部楼层   湖北省武汉市
zyJson4.0.8.ec,可以在论坛下到的

zyJson4.0.8.zip

193.65 KB, 下载次数: 1

回复

使用道具 举报

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

本版积分规则 致发广告者

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

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

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