当前位置: 首页 > 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
}

http://www.lryc.cn/news/258054.html

相关文章:

  • JVM面试连环炮:你准备好迎接挑战了吗?
  • Ansible通过kubernetes.core.k8s_info和kubernetes.core.k8s访问OCP
  • vscode汉化
  • 美易投资:美国圣诞树价格飙升,涨价的问题所在?
  • 国内外聊天AI大比拼,你知道几个?一键了解最火聊天AI应用!
  • C++STL的vector模拟实现
  • openssl 常用命令 pkcs12
  • 2017下半年软工(桥接模式)
  • Hive 浅析
  • C 语言中,结构体「.」与「->」的区别
  • 【Java Web学习笔记】5 - XML
  • 在jupyter notebook中修改其他文件的解决方案
  • 如何在Android中旋转屏幕时避免重新绘制Activity
  • 离线环境下安装python库(推荐pip download)
  • ubuntu16.04安装ROS+Gazebo
  • 手动搭建koa+ts项目框架(路由篇)
  • c语言:文件操作(1)
  • 运筹学经典问题(三):最大流问题
  • 裸机开发与Linux驱动开发的区别
  • 【蓝桥杯选拔赛真题75】Scratch行走的螃蟹 第十五届蓝桥杯scratch图形化编程 少儿编程创意编程选拔赛真题解析
  • 小型洗衣机哪个牌子质量好?迷你洗衣机排名前十名
  • MySQL_9.B-数索引
  • ubuntu-更改镜像源-系统初始化-安装Clion-C++编译环境-Java安装
  • c语言-动态内存管理
  • 【JAVA杂货铺】一文带你走进面向对象编程的构造方法 | Java| 面向对象编程 | (中)
  • 动态规划学习——通符串匹配,正则表达式
  • 【数据开发】Hive 多表join中的条件过滤与指定分区
  • 基于Java SSM框架实现高校人事管理系统项目【项目源码】计算机毕业设计
  • [C++] 模板进阶(非类型模板参数,特化,分离编译)
  • C++ this指针