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

Delphi XE的原生JSONObject如何判断键值是否存在?

【问题现象】

Delphi XE的原生JSONObject,取出键值的时候如下:

//json是传入的参数,里面包括"food_name"等之类的键值,没有food_type键值

procedure XXXXFunciton(json:TJSONObject)

var

        strFoodName,strFoodType:String;

begin

        strFoodName:=json.Get('food_name').JsonValue.Value;

        strFoodType:=json.Get('food_type').JsonValue.Value;

end;

系统会执行到“strFoodType:=json.Get('food_type').JsonValue.Value;”这一句出错。

【解决办法】

用JSONObject.TryGetValue方法来检查:

如下:

procedure XXXXFunciton(json:TJSONObject)

var

        strFoodName,strFoodType:String;

        jv:JSONValue;                //这个JSONValue不用建立与释放

begin

        strFoodName:=json.Get('food_name').JsonValue.Value;

        if(json.TryGetValue('food_type',jv)) then

                strFoodType:=json.Get('food_type').JsonValue.Value;

                //或者strFoodType:=jv.Value;也可以,此时jv里也有一份值

end;

【其他说明】

如果遇到中文乱码,可以在传递进json之前,就是json变量在字符串转换成TJSONObject类型的时候用TEncoding.UTF8.GetBytes来转下码。

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

相关文章:

  • Go Runtime功能初探
  • 01|Oracle学习(监听程序、管理工具、PL/SQL Developer、本地网络服务介绍)
  • 滴滴数据服务体系建设实践
  • VBA技术资料MF36:VBA_在Excel中排序
  • Shell脚本学习3
  • 代理模式--静态代理和动态代理
  • C++容器——list的模拟实现
  • VUE3 祖孙组件传值调用方法
  • 我的网安之路
  • langchain-ChatGLM源码阅读:webui.py
  • <C++>二、 类和对象
  • 【HttpRunnerManager】搭建接口自动化测试平台实战
  • 【adb】adb常用命令
  • SAP 委外副产品业务
  • 高并发编程-2. 并发级别
  • 牛客网Verilog刷题——VL47
  • Redis以及Java使用Redis
  • Apipost教程?一篇文章玩转Apipost
  • 微信小程序开发学习之--地图绘制行政区域图
  • 在windows下安装ruby使用gem
  • 【Ajax】笔记-设置CORS响应头实现跨域
  • 实现Feed流的三种模式:拉模式、推模式和推拉结合模式
  • Vue中使用Typescript及Typescript基础
  • MySQL数据库 【索引事务】
  • 源码阅读:classnames
  • 【解惑笔记】树莓派+OpenCV+YOLOv5目标检测(Pytorch框架)
  • PostgreSQL中如何配置Huge page的数量
  • Mysql之binlog日志浅析
  • js 生成器函数
  • HCIP OSPF+BGP综合实验