当前位置: 首页 > news >正文

C#、JavaScript、VBScript解析JSON数据源码

本示例使用设备:WIFI/TCP/UDP/HTTP协议RFID液显网络读卡器可二次开发语音播报POE-淘宝网 (taobao.com) 

C#解析JSON数据 

string dispstr = "{" + getChinesecode("扫码") + ":}" + data; //显示信息,注意中文汉字一定要转换为设备能显示的编码,其它字母数字符号不需要转换,{}内的信息反白显示       
string ChineseVoice = getChinesecode("扫码")  + data;string jsonText = "{\"Response\":\"json\",\"infotype\":\"1\"";      //固定前缀,我们的设备以此来检索返回信息,表示 驱动设备显示和响声
jsonText = jsonText + ",\"info\":\"" + info + "\"";                 //提交的信息序号,一定要对应
jsonText = jsonText + ",\"disp\":\"" + dispstr + "\\n\\n\"";        //显示文字,注意中文汉字一定要转换为设备能显示的编码,其它字母数字符号不需要转换,{}内的信息反白显示
jsonText = jsonText + ",\"dispdelay\":\"20\"";                      //显示时长20秒
jsonText = jsonText + ",\"beeptype\":\"1\"";                        //蜂鸣器发声种类,取值范围0-12
jsonText = jsonText + ",\"voicetype\":\"" + ChineseVoice + "\"";    //播报的TTS语音
jsonText = jsonText + ",\"k1delay\":\"20\"";                        //第1继电器开启延时单位,每1个单位延时25mm,20*25表示500mm,取值为0表示关闭继电器
jsonText = jsonText + ",\"k2delay\":\"20\"}";                       //第2继电器开启延时单位,以,分隔,总计可以控制8个继电器string disp=getjsonval(jsonText,"disp");public static string getjsonval(string totalstr, string namestr)    //JSON解析
{string valustr = "";totalstr = totalstr.Replace("{", "");totalstr = totalstr.Replace("}", "");totalstr=totalstr.Replace ("\"","");string[] dataArray = totalstr.Split(new char[2] { ',', ',' });if (dataArray.GetUpperBound(0) > 0){for (int i = 0; i < dataArray.Length; i++){string[] dataArray2 = dataArray[i].Split(new char[2] { ':', ':' });if (dataArray2[0] == namestr){valustr = dataArray2[1];break;}                      }}return valustr;
}

 VBScript解析JSON

poststrlen = Request.TotalBytes '获取字节数
If poststrlen > 0 Thenpoststr = bin2str(Request.BinaryRead(poststrlen))info = getpostval(poststr, "info") '信息序号jihao = getpostval(poststr, "jihao") '设备机号(可自编)cardtype = getpostval(poststr, "cardtype") '卡类型有IC、ID、ISO15693等heartbeattype = getpostval(poststr, "heartbeattype") '心跳信息类型scantype = getpostval(poststr, "scantype") '扫描枪信息类型card = getpostval(poststr, "card") '卡序列号data = getpostval(poststr, "data") '扇区内容dn = getpostval(poststr, "dn") '设备硬件序列号,出厂时已固化,全球唯一Status = getpostval(poststr, "status") '状态,如密码认证失败为12
End ifFunction bin2str(bindata)Dim rsStream, strlsSet rsStream = Server.CreateObject("ADODB.Stream")rsStream.Type = 2rsStream.OpenrsStream.WriteText bindatarsStream.Position = 0rsStream.Charset = "utf-8" '或GBKrsStream.Position = 2strls = rsStream.ReadTextrsStream.CloseSet rsStream = Nothingbin2str = strls
End FunctionFunction getjsonval(totalstr, namestr)Dim p1, p2, k, n, strlsn = Len(totalstr)If n < 5 Thengetjsonval = ""Exit FunctionEnd IfIf (Left(totalstr, 1) <> "{") Or (Right(totalstr, 1) <> "}") Thengetjsonval = ""Exit FunctionEnd Ifstrls = "," + Mid(totalstr, 2, n - 2) + ","k = Len(namestr) + 4p1 = InStr(strls, ",""" + namestr + """:")If p1 < 1 Thengetjsonval = ""Exit FunctionEnd Ifp2 = InStr(p1 + k, strls, ",")If p2 > (p1 + k) Thengetjsonval = Mid(strls, p1 + k, p2 - (p1 + k))If (Left(getjsonval, 1) <> """") Or (Right(getjsonval, 1) <> """") Thengetjsonval = ""Exit FunctionEnd Ifn = Len(getjsonval)If n < 3 Thengetjsonval = ""Exit FunctionEnd Ifgetjsonval = Mid(getjsonval, 2, n - 2)Elsegetjsonval = ""End If
End Function

JavaScript解析JSON 

function bintostr(bindata) {var rsStream = new ActiveXObject("ADODB.Stream");rsStream.Type = 2;rsStream.Open();rsStream.WriteText(bindata);rsStream.Position = 0;rsStream.Charset = "utf-8";  //或GBKrsStream.Position = 2;strls = rsStream.ReadText;rsStream.Close();rsStream = null;return strls;
}var poststrlen = Request.TotalBytes;
if (poststrlen > 0) {                                    //获取JSON方式提交的数据jsonstr = bintostr(Request.BinaryRead(poststrlen));  //解析JSON参数var jsontext = eval("(" + jsonstr + ")");var info = jsontext.info;                   //信息序号,回应时要带入此序号var jihao = jsontext.jihao;                 //设备机号(可自编)var cardtype = jsontext.cardtype;           //卡类型 及 卡状态var heartbeattype = jsontext.heartbeattype; //心跳信息类型var scantype = jsontext.scantype;           //扫码标识var card = jsontext.card;                   //16进制的卡序号var data = jsontext.data;                   //扇区内容 或 扫码数据var input = jsontext.input;                 //输入标识var output = jsontext.output;               //输出标识var rand = jsontext.rand;                   //设备随机数var dn = jsontext.dn;                       //设备硬件序列号,出厂时已固化,全球唯一var status = jsontext.status;               //读卡状态,如密码认证失败为12
}

相关文章:

C#、JavaScript、VBScript解析JSON数据源码

本示例使用设备&#xff1a;WIFI/TCP/UDP/HTTP协议RFID液显网络读卡器可二次开发语音播报POE-淘宝网 (taobao.com) C#解析JSON数据 string dispstr "{" getChinesecode("扫码") ":}" data; //显示信息,注意中文汉字一定要转换为设备能显…...

JVM面试连环炮:你准备好迎接挑战了吗?

在Java开发领域&#xff0c;JVM面试一直是一个热门话题。作为一名优秀的开发者&#xff0c;你是否已经准备好迎接这场挑战了呢&#xff1f;今天&#xff0c;我们就来深度解析一下JVM面试的热点问题&#xff0c;帮助你更好地应对面试&#xff0c;一举拿下offer&#xff01; 1、…...

Ansible通过kubernetes.core.k8s_info和kubernetes.core.k8s访问OCP

文章目录 环境OCPClient&#xff08;Ansible控制节点&#xff09; 步骤准备工作在client端配置ssh免密登录OCP端在client端安装Ansible kubernetes.core.k8s_info第1次尝试在OCP端安装python和pip3在OCP端安装kubernetes在OCP端安装PyYAML第2次尝试在OCP端配置config文件第3次尝…...

vscode汉化

安装插件 Chinese (Simplified) (简体中文) Language Pack for 重新打开&#xff0c;若还是没有汉化&#xff1a; 【CtrlShiftp】 输入“configure display language”&#xff0c;回车键 选择刚刚安装的 中文(简体)...

美易投资:美国圣诞树价格飙升,涨价的问题所在?

美国圣诞树价格飙升&#xff0c;商家称“拜登经济学”是导致涨价的罪魁祸首 随着圣诞节的临近&#xff0c;美国各地的家庭开始准备庆祝这一传统佳节。然而&#xff0c;今年美国的圣诞树价格却呈现出了明显的上涨趋势。据一些商家反映&#xff0c;这主要是由于“拜登经济学”所致…...

国内外聊天AI大比拼,你知道几个?一键了解最火聊天AI应用!

国内类ChatGPT的AI工具一网打尽 2022年&#xff0c;是一个不平凡的一年。ChatGPT迅速崭露头角&#xff0c;成为备受瞩目的热门话题。特别是在OpenAI发布了基于GPT-3.5模型的ChatGPT版本后&#xff0c;这一产品因其卓越的对话能力和广泛的应用潜力&#xff0c;很快引起了大众的…...

C++STL的vector模拟实现

文章目录 前言成员变量成员函数构造函数push_backpop_backinserterase析构函数拷贝构造 前言 成员变量 namespace but {template<class T>class vector{public:typedef T* iterator;private:iterator _start;iterator _finish;iterator _end_of_storage;}; }我们之前实…...

openssl 常用命令 pkcs12

openssl pkcs12 openssl pkcs12 官方文档 1. 描述 The pkcs12 command allows PKCS#12 files (sometimes referred to as PFX files) to be created and parsed. PKCS#12 files are used by several programs including Netscape, MSIE and MS Outlook. pkcs12 命令是用来创…...

2017下半年软工(桥接模式)

题目——桥接模式&#xff08;抽象调用实现部分&#xff09; package org.example.桥接模式;/*** 桥接模式的核心思想是将抽象部分与它的实现部分分离&#xff0c;使它们可以独立变化&#xff0c;就是说你在实现部分&#xff1a;WinImp、LinuxImp基础上还能加上RedHatImp&#…...

Hive 浅析

Hive是一个简单的LUA沙盒&#xff0c;除了基本的LUA解释器的功能以外&#xff0c;还提供了诸如热加载等功能。 了解HIVE的工作原理有利于了解Lua虚拟机的底层实现机理。 本文从是什么-怎么用-为什么三个维度介绍HIVE。 Hive Hive是什么 hive是一个简单的LUA应用框架,目前基于…...

C 语言中,结构体「.」与「->」的区别

简单来说 「 」的左边是结构体名字时用点符号「.」 「 」的左边是结构体指针时名字时用箭头「->」 对于要读取结构体种的数据时&#xff0c;有下面三种写法&#xff0c;操作是等价的。 struct ListNode a;struct ListNode *p1 &a;/*三种写法*/a.element 2333;p1->e…...

【Java Web学习笔记】5 - XML

项目代码 https://github.com/yinhai1114/JavaWeb_LearningCode/tree/main/xml 零、在线文档 XML系列教程 一、XML引出 1.为什么需要XML 1.需求1 :两个程序间进行数据通信? 2.需求2:给一台服务器&#xff0c;做一个配置文件&#xff0c;当服务器程序启动时&#xff0c;去…...

在jupyter notebook中修改其他文件的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…...

如何在Android中旋转屏幕时避免重新绘制Activity

如何在Android中旋转屏幕时避免重新绘制Activity 在Android开发中&#xff0c;设备旋转通常导致当前活动&#xff08;Activity&#xff09;被销毁并重新创建&#xff0c;这可能导致用户界面重置和不必要的资源重新加载。然而&#xff0c;有时我们希望避免这种行为&#xff0c;…...

离线环境下安装python库(推荐pip download)

离线环境下安装python库&#xff08;推荐pip download&#xff09; 目录 1.需求 2.失败操作&#xff08;注意&#xff09; 3.成功操作 4.其它参考 1.需求 机器部署web系统环境后&#xff0c;就不可再次联网&#xff0c;所以升级python web后端&#xff0c;需要离线安装pyt…...

ubuntu16.04安装ROS+Gazebo

ubuntu16.04安装ROS参考文章 ros安装&#xff08;一键最简安装&#xff0c;吹爆鱼香ROS&#xff0c;请叫我鱼吹&#xff09; ROS篇——Ubuntu快速一键安装ROS或ROS2&#xff08;通用&#xff09; ubuntu安装ROS melodic(最新、超详细图文教程) 配置ubuntu以及安装ros2必要环…...

手动搭建koa+ts项目框架(路由篇)

文章目录 前言一、安装koa-router二、引入koa-router并使用三、优化路由配置总结如有启发&#xff0c;可点赞收藏哟~ 前言 本文基于手动搭建koats项目框架&#xff08;基础篇&#xff09;配置接口路由 一、安装koa-router npm i -S koa-router二、引入koa-router并使用 ./sr…...

c语言:文件操作(1)

前言&#xff1a;为什么要使用文件 使用文件可以让程序在不同运行之间保存和读取数据。这样可以实现持久化存储&#xff0c;即使程序关闭后数据也不会丢失。文件也可以用于数据交换&#xff0c;允许不同程序之间共享信息。在 C 语言中&#xff0c;文件还可以用于读取配置信息&…...

运筹学经典问题(三):最大流问题

问题描述 给定一个图网络 G ( V , E ) G(V, E) G(V,E)&#xff0c;网络中连边的权重代表最大容量&#xff0c;在这个图中找出从起点到终点流量最大的路径。 数学建模 集合&#xff1a; I I I&#xff1a;点的集合&#xff1b; E E E&#xff1a;边的集合。 常量&#x…...

裸机开发与Linux驱动开发的区别

一. 简介 裸机开发&#xff0c;即我们常说的不带系统的单片机开发。 Linux驱动开发&#xff0c;即带文件系统的Linux驱动的开发。 二. 裸机开发与Linux驱动开发的区别 1. 裸机开发 比较底层&#xff0c;跟寄存器打交道&#xff0c;有些 MCU提供了库。 2. Linux驱动开发…...

wordpress后台更新后 前端没变化的解决方法

使用siteground主机的wordpress网站&#xff0c;会出现更新了网站内容和修改了php模板文件、js文件、css文件、图片文件后&#xff0c;网站没有变化的情况。 不熟悉siteground主机的新手&#xff0c;遇到这个问题&#xff0c;就很抓狂&#xff0c;明明是哪都没操作错误&#x…...

rknn优化教程(二)

文章目录 1. 前述2. 三方库的封装2.1 xrepo中的库2.2 xrepo之外的库2.2.1 opencv2.2.2 rknnrt2.2.3 spdlog 3. rknn_engine库 1. 前述 OK&#xff0c;开始写第二篇的内容了。这篇博客主要能写一下&#xff1a; 如何给一些三方库按照xmake方式进行封装&#xff0c;供调用如何按…...

从零实现富文本编辑器#5-编辑器选区模型的状态结构表达

先前我们总结了浏览器选区模型的交互策略&#xff0c;并且实现了基本的选区操作&#xff0c;还调研了自绘选区的实现。那么相对的&#xff0c;我们还需要设计编辑器的选区表达&#xff0c;也可以称为模型选区。编辑器中应用变更时的操作范围&#xff0c;就是以模型选区为基准来…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

8k长序列建模,蛋白质语言模型Prot42仅利用目标蛋白序列即可生成高亲和力结合剂

蛋白质结合剂&#xff08;如抗体、抑制肽&#xff09;在疾病诊断、成像分析及靶向药物递送等关键场景中发挥着不可替代的作用。传统上&#xff0c;高特异性蛋白质结合剂的开发高度依赖噬菌体展示、定向进化等实验技术&#xff0c;但这类方法普遍面临资源消耗巨大、研发周期冗长…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

Spring AI与Spring Modulith核心技术解析

Spring AI核心架构解析 Spring AI&#xff08;https://spring.io/projects/spring-ai&#xff09;作为Spring生态中的AI集成框架&#xff0c;其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似&#xff0c;但特别为多语…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数

高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...