.net Excel的Winform控件 使用JSON公式代码

可以配合点击事件通过调接口的公式查询第三方平台的数据 

using Feng.Json;
using Feng.Script.CBEexpress;
using Feng.Script.Method;
using System;
using System.Collections.Generic;namespace Feng.Script.FunctionContainer
{[Serializable]public class JsonFunctionContainer : CBMethodContainer{public const string Function_Category = "Json";public const string Function_Description = "Json函数";public override string Name{get { return Function_Category; }}public override string Description{get { return Function_Description; }}public JsonFunctionContainer()  {BaseMethod model = null;model = new BaseMethod();model.Name = "JsonNew";model.Description = @"创建新的Json对象";model.Eg = @"JsonNew()";model.Function = JsonNew;MethodList.Add(model);model = new BaseMethod();model.Name = "JsonParse";model.Description = @"从字符串解析Json JsonParse(text)";model.Eg = @"JsonParse(text)";model.Function = JsonParse;MethodList.Add(model);model = new BaseMethod();model.Name = "JsonGet";model.Description = @"获取Json值 JsonGet(json,""KEY"")";model.Eg = @"JsonGet(json,""KEY"")";model.Function = JsonGet;MethodList.Add(model);model = new BaseMethod();model.Name = "JsonSet";model.Description = @"设置Json值 JsonSet(json,""KEY"",123)";model.Eg = @"JsonSet(json,""KEY"",123)";model.Function = JsonGet;MethodList.Add(model);model = new BaseMethod();model.Name = "JsonItem";model.Description = @"获取Json值 JsonItem(json,""KEY"")";model.Eg = @"JsonItem(json,""KEY"")";model.Function = JsonItem;MethodList.Add(model);model = new BaseMethod();model.Name = "Json";model.Description = @"获取Json值(json,""KEY"") JsonItemKey与JsonArrayIndex的组合使用";model.Eg = @"Json(json,""KEY"")";model.Function = Json;MethodList.Add(model);model = new BaseMethod();model.Name = "JsonToString";model.Description = @"转为字符串 JsonToString(json)";model.Eg = @"JsonToString(json)";model.Function = JsonToString;MethodList.Add(model);#warning 消息处理队列,超过的返回model = new BaseMethod();model.Name = "JsonObject";model.Description = @"返回Json对象 JsonObject(""key"",value)";model.Eg = @"JsonObject()";model.Function = JsonObject;MethodList.Add(model);model = new BaseMethod();model.Name = "JsonArrary";model.Description = @"返回Json数组 JsonArrary()";model.Eg = @"JsonArrary()";model.Function = JsonArrary;MethodList.Add(model);model = new BaseMethod();model.Name = "JsonValue";model.Description = @"返回常数Json JsonValue(123)";model.Eg = @"JsonValue()";model.Function = JsonValue;MethodList.Add(model);model = new BaseMethod();model.Name = "JsonItemCount";model.Description = @"获取值数量 JsonItemCount(json)";model.Eg = @"JsonItemCount(json,1)";model.Function = JsonItemCount;MethodList.Add(model);model = new BaseMethod();model.Name = "JsonItemIndex";model.Description = @"获取值 JsonItemIndex(json,1)";model.Eg = @"JsonItemIndex(json,1)";model.Function = JsonItemIndex;MethodList.Add(model);model = new BaseMethod();model.Name = "JsonItemKey";model.Description = @"获取值 JsonItemKey(Json,""KEY"")";model.Eg = @"JsonItemKey(Json,""KEY"")";model.Function = JsonItemKey;MethodList.Add(model);model = new BaseMethod();model.Name = "JsonItemAdd";model.Description = @"添加值到Json JsonItemAdd(Json,""KEY"",Cell(""AB""))";model.Eg = @"JsonItemAdd(Json,""KEY"",Cell(""AB""))";model.Function = JsonItemAdd;MethodList.Add(model);model = new BaseMethod();model.Name = "JsonItemRemove";model.Description = @"从jons属性移除 JsonItemRemove(json,""KEY"")";model.Eg = @"JsonItemRemove(json,""KEY"")";model.Function = JsonItemRemove;MethodList.Add(model);model = new BaseMethod();model.Name = "JsonArrayRemove";model.Description = @"从json数组中移除 JsonArrayRemove(jsonarr,[1,json])";model.Eg = @"JsonArrayRemove(jsonarr,1)";model.Function = JsonArrayRemove;MethodList.Add(model); model = new BaseMethod();model.Name = "JsonArrayAdd";model.Description = @"从json数组中加入 JsonArrayAdd(jsonarr,[json,123,key:value])";model.Eg = @"JsonArrayAdd(jsonarr,json)";model.Function = JsonArrayAdd;MethodList.Add(model);model = new BaseMethod();model.Name = "JsonArrayCount";model.Description = @"返回json数组数量 JsonArrayCount(jsonarr)";model.Eg = @"JsonArrayCount(jsonarr)";model.Function = JsonArrayCount;MethodList.Add(model);model = new BaseMethod();model.Name = "JsonArrayIndex";model.Description = @"返回json数组中索引处的值 JsonArrayIndex(jsonarr,1)";model.Eg = @"JsonArrayIndex(jsonarr,1)";model.Function = JsonArrayIndex;MethodList.Add(model);}public virtual object JsonArrayCount(params object[] args){Feng.Json.FJsonArray json = base.GetArgIndex(1, args) as Feng.Json.FJsonArray;return json.Count;}public virtual object JsonArrayIndex(params object[] args){Feng.Json.FJsonArray json = base.GetArgIndex(1, args) as Feng.Json.FJsonArray; int index = base.GetIntValue(2, args);return json[index]; }public virtual object JsonArrayAdd(params object[] args){Feng.Json.FJsonArray json = base.GetArgIndex(1, args) as Feng.Json.FJsonArray;if (args.Length == 4){string jsonkey = base.GetTextValue(2, args);object jsonvalue = base.GetArgIndex(3, args);json.Add(jsonkey, jsonvalue);return Feng.Utils.Constants.YES;}Feng.Json.FJsonBase obj = base.GetArgIndex(2, args) as Feng.Json.FJsonBase;if (obj != null){json.Add(obj);return Feng.Utils.Constants.YES;}object value= base.GetArgIndex(2, args);if (value!=null){json.Add(value);return Feng.Utils.Constants.YES;}return Feng.Utils.Constants.Fail;}public virtual object JsonArrayRemove(params object[] args){Feng.Json.FJsonArray json = base.GetArgIndex(1, args) as Feng.Json.FJsonArray;Feng.Json.FJsonBase obj = base.GetArgIndex(2, args) as Feng.Json.FJsonBase;if (obj != null){json.Remmove(obj);return Feng.Utils.Constants.YES;}int index = base.GetIntValue(2, -1, args);if (index >= 0){json.Remmove(index);return Feng.Utils.Constants.YES;}return Feng.Utils.Constants.Fail;}public virtual object JsonToString(params object[] args){Feng.Json.FJsonBase json = base.GetArgIndex(1, args) as Feng.Json.FJsonBase;return json.ToString();}public virtual object JsonObject(params object[] args){Feng.Json.FJson json = new FJson();string key = base.GetTextValue(1, args);if (!string.IsNullOrWhiteSpace(key)){object value = base.GetArgIndex(2, args);json.Add(key, value);}return json;}public virtual object JsonArrary(params object[] args){Feng.Json.FJsonArray json = new FJsonArray();return json;}public virtual object JsonValue(params object[] args){object value = base.GetArgIndex(1, args);if (value is Feng.Json.FJsonValue){return (value as Feng.Json.FJsonValue).Value;}Feng.Json.FJsonValue json = new FJsonValue();json.Value = value;return json;}public virtual object JsonItemCount(params object[] args){Feng.Json.FJson json = base.GetArgIndex(1, args) as Feng.Json.FJson;if (json != null){return json.Items.Count;}return 0;}public virtual object JsonItemIndex(params object[] args){Feng.Json.FJsonBase json = base.GetArgIndex(1, args) as Feng.Json.FJsonBase;int index = base.GetIntValue(2, args);return json[index];}public virtual object JsonItemKey(params object[] args){Feng.Json.FJsonBase json = base.GetArgIndex(1, args) as Feng.Json.FJsonBase;string key = base.GetTextValue(2, args);return json[key];}public virtual object JsonItemAdd(params object[] args){Feng.Json.FJson json = base.GetArgIndex(1, args) as Feng.Json.FJson;string key = base.GetTextValue(2, args);object value = base.GetArgIndex(3, args);json.Add(key, value); return json;}public virtual object JsonItemRemove(params object[] args){Feng.Json.FJson json = base.GetArgIndex(1, args) as Feng.Json.FJson;string key = base.GetTextValue(2, args);json.Remove(key);return json;}public virtual object JsonParse(params object[] args){string text = base.GetTextValue(1, args);Feng.Json.FJsonBase json = Feng.Json.FJsonParse.Parese(text);return json;}public virtual object JsonNew(params object[] args){ Feng.Json.FJson json = new FJson();return json;}public virtual object JsonSet(params object[] args){object obj = base.GetArgIndex(1, args); Feng.Json.FJson fJson = obj as Feng.Json.FJson;object value = base.GetTextValue(3, string.Empty, args);FJsonBase jsonvalue = value as FJsonBase;if (jsonvalue == null){jsonvalue = new FJsonValue();jsonvalue.Value = value;}if (fJson != null){string key = base.GetTextValue(2, string.Empty, args);FJsonItem item = fJson.GetItem(key);if (item==null){item = new FJsonItem();item.Key = key;item.Value = jsonvalue; }else{item.Value = jsonvalue;}return Feng.Utils.Constants.OK;}Feng.Json.FJsonItem fjsonitem = obj as Feng.Json.FJsonItem;if (fjsonitem != null){fjsonitem.Value = jsonvalue;return Feng.Utils.Constants.OK;}Feng.Json.FJsonArray fjsonarray = obj as Feng.Json.FJsonArray;if (fjsonarray != null){int index = base.GetIntValue(2, -1, args);if (index < fjsonarray.Jsones.Count){fjsonarray.Jsones[index] = jsonvalue;}else{fjsonarray.Add(jsonvalue);}return Feng.Utils.Constants.OK;}return Feng.Utils.Constants.FALSE;}public virtual object JsonGet(params object[] args){object obj = base.GetArgIndex(1, args);Feng.Collections.ListEx<object> list = base.GetArgIndex(2, args) as Feng.Collections.ListEx<object>;if (obj is Feng.Json.FJsonBase && list != null){return JsonGet(obj as Feng.Json.FJsonBase, list);}Feng.Json.FJson fJson = obj as Feng.Json.FJson;if (fJson != null){string key = base.GetTextValue(2, string.Empty, args);if (!string.IsNullOrWhiteSpace(key)){object value = fJson.GetItem(key);Feng.Json.FJsonBase json = value as Feng.Json.FJsonBase;if (json == null){return value;}return json.Value;}return fJson.Value;}Feng.Json.FJsonItem fjsonitem = obj as Feng.Json.FJsonItem;if (fjsonitem != null){if (fjsonitem.Value != null){Feng.Json.FJsonBase json = fjsonitem.Value as Feng.Json.FJsonBase;if (json != null){return json.Value;}}return null;}Feng.Json.FJsonValue fjsonvalue = obj as Feng.Json.FJsonValue;if (fjsonvalue != null){if (fjsonvalue.Value != null){return fjsonvalue.Value;}return null;}Feng.Json.FJsonArray fjsonarray = obj as Feng.Json.FJsonArray;if (fjsonarray != null){int index = base.GetIntValue(2, -1, args);if (index >= 0){if (index < fjsonarray.Count){object value = fjsonarray[index];Feng.Json.FJsonBase json = value as Feng.Json.FJsonBase;if (json == null){return value;}return json;}}if (fjsonarray.Count > 0){FJsonBase jsonar = fjsonarray[0];if (jsonar != null){Feng.Json.FJsonBase json = jsonar.Value as Feng.Json.FJsonBase;if (json != null){return json.Value;}} }return null;}return obj;}public object JsonGet(Feng.Json.FJsonBase obj, Feng.Collections.ListEx<object> list){Feng.Json.FJsonBase json = obj;foreach (object item in list){object ob = GetJson(json, item);json = ob as Feng.Json.FJsonBase;if (json == null){return ob;}}return json;}public object GetJson(Feng.Json.FJsonBase obj, object item){Feng.Json.FJson fJson = obj as Feng.Json.FJson;if (fJson != null){string key = Feng.Utils.ConvertHelper.ToString(item);if (!string.IsNullOrWhiteSpace(key)){object value = fJson.GetItem(key);Feng.Json.FJsonBase json = value as Feng.Json.FJsonBase;if (json == null){return value;}return json.Value;}return fJson.Value;}Feng.Json.FJsonValue fjsonvalue = obj as Feng.Json.FJsonValue;if (fjsonvalue != null){if (fjsonvalue.Value != null){return fjsonvalue.Value;}return null;}Feng.Json.FJsonArray fjsonarray = obj as Feng.Json.FJsonArray;if (fjsonarray != null){int index = Feng.Utils.ConvertHelper.ToInt32(item, -1);if (index >= 0){if (index < fjsonarray.Count){object value = fjsonarray[index];Feng.Json.FJsonBase json = value as Feng.Json.FJsonBase;if (json == null){return value;}return json;}}if (fjsonarray.Count > 0){FJsonBase jsonar = fjsonarray[0];if (jsonar != null){Feng.Json.FJsonBase json = jsonar.Value as Feng.Json.FJsonBase;if (json != null){return json.Value;}}}return null;}return obj;}public virtual object JsonItem(params object[] args){object obj = base.GetArgIndex(1, args);int index = base.GetIntValue(2, -1, args);if (index >= 0){object value = JsonArrayIndex(args);return value;}string key = base.GetTextValue(2, string.Empty, args);if (!string.IsNullOrWhiteSpace(key)){object value = JsonItemKey(args);return value;}Feng.Json.FJson fJson = obj as Feng.Json.FJson;if (fJson != null){return fJson;}Feng.Json.FJsonItem fjsonitem = obj as Feng.Json.FJsonItem;if (fjsonitem != null){return fjsonitem.Value;}Feng.Json.FJsonArray fjsonarray = obj as Feng.Json.FJsonArray;if (fjsonarray != null){FJsonBase json = fjsonarray[0];return json;}return obj;}public virtual object Json(params object[] args){object obj = base.GetArgIndex(1, args);int index = base.GetIntValue(2, -1, args);if (index >=0){return JsonArrayIndex(args);}string key = base.GetTextValue(2,string.Empty, args);if (!string.IsNullOrWhiteSpace(key)){ return JsonItemKey(args);}Feng.Json.FJson fJson = obj as Feng.Json.FJson;if (fJson != null){return fJson.Value;}Feng.Json.FJsonItem fjsonitem = obj as Feng.Json.FJsonItem;if (fjsonitem != null){return fjsonitem.Value;}Feng.Json.FJsonArray fjsonarray = obj as Feng.Json.FJsonArray;if (fjsonarray != null){return fjsonarray[0].Value;}return obj;}}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/47334.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

1、PostgreSQL安装

PostgreSQL安装 1、postgreSQL介绍 PostgreSQL是一个免费的对象关系型数据库服务器&#xff08;ORDBMS&#xff09;&#xff0c;在灵活的BSD许可证下发行.PostgreSQL开发者把它念作post-gress-Q-L。PostgreSQL的Slogan是“世界上最先进的开源关系型数据库”。“开源界的Oracl…

成为CMake砖家(2): macOS创建CMake本地文档的app

大家好&#xff0c;我是白鱼。 使用 CMake 的小伙伴&#xff0c; 有的是在 Windows 上&#xff0c; 还有的是在 macOS 上。之前咱们讲了 windows 上查看 cmake 本地 html 文档的方式&#xff0c; 这篇讲讲 macOS 上查看 cmake 本地 html 文档的方法。 1. 问题描述 当使用 CMa…

防火墙--带宽管理

目录 核心思想 带宽限制 带宽保证 连接数的限制 如何实现 接口带宽 队列调度 配置位置 在接口处配置 带宽策略配置位置 带宽通道 配置地方 接口带宽、带宽策略和带宽通道联系 配置顺序 带块通道在那里配置 选项解释 引用方式 策略独占 策略共享 重标记DSCP优先…

Unity 关于Button无法高亮的问题

在Unity中&#xff0c;当我们新创建一个ButtonUI组件&#xff0c;并保持默认设置时&#xff0c;当我们把鼠标移动到Button上面时&#xff0c;Button是可以正常高亮的。但是当我们点击Button后再移动鼠标到Button处会发现Button无法高亮了。只有点击空白处后再移动鼠标到Button中…

文件乱码问题的一例分析

今天查看日志,遇到一种乱码问题, 终端展示的文件内容为: “\r\r\n” 尝试分析其原文. 使用xxd按照十六进制查看, 得到对应数据为: c3 8e c3 84 c2 bc c3 be c2 b2 c2 bb c2 b4 c3 a6 c3 94 c3 9a 0d 0d 0a 里面c3和c2大量存在,怀疑与两重编码有关, 使用NodeJS iconv-lite 做如…

软件游戏缺失concrt140.dll的解决方法,轻松搞定dll丢失问题

为了解决concrt140.dll文件缺失的问题&#xff0c;首先需要了解concrt140.dll文件的具体情况。只有在充分了解的基础上&#xff0c;才能采取有效的解决措施。下面&#xff0c;将详细介绍concrt140.dll文件及其解决方案。 一、了解concrt140.dll是什么 concrt140.dll 是微软的一…

SmartPipe新增功能:自动识别含间隙的低质量模型与自动处理超过180度的圆弧管路

自2022年12月SmartPipe上市以来&#xff0c;我一直在不断迭代和升级其轴线识别算法。对于客户反馈的无法自动转换的模型&#xff0c;我都视若珍宝&#xff0c;将其视为提升算法性能的绝佳机会。经过一年半的积累&#xff0c;SmartPipe的测试模型从最初的10个逐步迭代到近100个。…

使用MySQL WorkBench导出SQL脚本

参考: 在MySQL workbench 中导出sql脚本文件_mysql workbench自动保存的脚本在哪-CSDN博客 需要注意的是: 选择高级选项 这里不勾选&#xff0c;这样生成的INSERT是逐条的。将每个ROW合并为一个INSERT语句。 这里选择dump structure and data

画册制作攻略,助你成为视觉传达大师

在数字时代&#xff0c;画册作为一种传统而又充满魅力的视觉传达工具&#xff0c;依旧在各个领域扮演着重要角色。无论是在企业宣传、个人作品展示&#xff0c;还是艺术创作中&#xff0c;一本精美的画册都能让你的作品更具吸引力。那么&#xff0c;如何制作出一本引人入胜的画…

SQL Error: 1406, SQLState: 22001

SQL错误代码1406和SQLState 22001通常表示“列数据过长”错误。这意味着尝试插入或更新列中的值&#xff0c;但该值的长度超过了该列允许的最大长度。 解决此问题的几个步骤&#xff1a; 检查列长度&#xff1a; 确定引起错误的列。检查数据库架构中该列允许的最大长度。 验证…

STM32使用Wifi连接阿里云

目录 1 实现功能 2 器件 3 AT指令 4 阿里云配置 4.1 打开阿里云 4.2 创建产品 4.3 添加设备 5 STM32配置 5.1 基础参数 5.2 功能定义 6 STM32代码 本文主要是记述一下&#xff0c;如何使用阿里云物联网平台&#xff0c;创建一个简单的远程控制小灯示例。 完整工程&a…

创作模板三【创作模板】

xxx【创作模板三】 前言推荐说明最后 前言 2023年3月13日 以下内容源自《创作模板三》 仅供学习交流使用 推荐 无 说明 大三下的模板 专栏&#xff1a;计算机网络 【最后】的文案 因为确实不在意别人的看法&#xff0c;你了解的我不足万分之一 最后 你对我百般注视&am…

钓鱼攻击 - 基础学习

目录 0x00 基础1. 方式2. 目的3. 分类 0x01 外网钓鱼1. 目的2. 步骤 0x02 内网钓鱼1. 目的2. 步骤 0x03 钓鱼应急措施 0x00 基础 1. 方式 钓鱼攻击是一种典型的欺诈式攻击手段&#xff0c;攻击者通过伪装成可以信任的角色&#xff0c;利用电子邮件或其他通信渠道向被攻击者发送…

深度学习入门——误差反向传播

要正确理解误差反向传播法&#xff0c;我个人认为有两种方法&#xff1a;一种是基于数学式&#xff1b;另一种是基于计算图&#xff08;computational graph&#xff09; 前者是比较常见的方法&#xff0c;机器学习相关的图书中多数都是以数学式为中心展开论述的。因为这种方法…

老司机减分宝典助手-学法减分扣分题目及答案 #经验分享#经验分享#职场发展

学法减分其实就是把我们驾驶证上面的分数一分一分地找回来&#xff0c;为什么说是一分一分地找回来呢&#xff1f;因为必须先把违章处理完才可以&#xff0c;无论这辆车是不是你的&#xff0c;无论这辆车挂靠在谁的公司名下或者是单位名下&#xff0c;你都可以把这个分找回来&a…

电源模块企业该如何解决测试中的痛点问题?

根据研究发现&#xff0c;超过76%的企业在进行测试时会对产品质量、可靠性和测试速度这三项核心指标尤为重视。但是随着近几年的发展&#xff0c;目前的测试方法和措施对于这三项指标的测试远远无法达到企业的预期。被测产品的整体质量参差不齐、测试数据的可靠性以及测试的速度…

N7翻译实战

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f356; 原作者&#xff1a;K同学啊# 前言## 前言 本周完成项目实战用于训练一个简单的序列到序列&#xff08;seq2seq&#xff09;模型以实现英语到法语的翻译。数据预处理、模型构建、训练以及可…

浅谈C嘎嘎类与对象

本篇文章与大家浅谈一下C嘎嘎的类与对象知识点 类的定义 关键字&#xff1a;class 语法格式&#xff1a; class 类名 { }&#xff1b;//这里的分号不能少 此外&#xff0c;class有三个属性分别是private、public、protected&#xff0c;这三个属性是干啥的&#xff0c;相…

C# Linq用法

C# 中的 LINQ&#xff08;Language Integrated Query&#xff09;是一个非常强大的功能&#xff0c;它允许你以声明性方式查询和操作数据集合。LINQ 可以用于各种数据源&#xff0c;如数组、列表、数据库等。 1. 查询操作&#xff08;Query Operations&#xff09; a. 选择&a…

【Python与GUI开发】事件处理与打包分发

文章目录 前言 一、高级事件处理 1.自定义事件 2.拖放操作 3.复杂控件的事件处理 二、打包和分发 Tkinter 应用 1.PyInstaller 2.cx_Freeze 3.spec 文件 4.分发注意事项 三、实战示例&#xff1a;文件浏览器 总结 前言 在前面的讨论中&#xff0c;我们深入理解了 T…