delphi的json类:SuperObject
转对象:
js:=so();
js.I['nID'] := nID; //
js.S['sKey'] := sKey; //
js.S['sID'] := sID; //
js.S['sID3'] := sID3; //
s:=sFtpPath; //路径
s:='/FTP'+iif(s='','/','')+s; //从FTP传的都要加这个
js.S['sPath'] := s; //FTP路径,FTP的都要加头/FTP/
js.S['sFile'] := extractFileName(sFile); //上传不带路径,路径在sFtpPath里
js.S['sFileOld']:= extractFileName(sFileOld);//
js.S['sImage'] := extractFileName(sImage); //
js.D['nSize'] := nSize; //
js.S['sExt'] := sExt; //
js.S['dDate'] := formatDateTime('yyyy-MM-dd hh:mm:ss',dDate);
s:=js.AsString();
取返回值:
vJson:=So(lowercase(sResult));
//检查结果
ret:=getJsonValue(vJson,'error','');
getJsonValue函数:
{*******************************json工具,20180101******************************
处理json的辅助类,zdj、zch,20180101
*******************************************************************************}
unit jsonHelper;
interface
uses
windows, sysUtils, superobject, variants;
function getJsonValue(json:ISuperObject; AField:string; ADefault:string=''):string; //获取json字段对应的值
implementation
uses untPub;
{
1.字段不存在时会报错;
2.字段区分大小写,故全部转换为小写
}
function getJsonValue(json: ISuperObject; aField, ADefault: string): string;
var v:variant;
function wuxiao:boolean;
begin
result:=variants.VarIsNull(v) or variants.VarIsType(v, varUnknown);
if not result then result:=v=ADefault;
end;
begin
result:=aDefault;
try
if (not assigned(json)) then exit;
v:=json.S[AField]; //lowercase(AField) dj180521不能转换大小写,因为有FTP密码
if wuxiao then v:=json.S[AField];
if wuxiao then v:=json.s[upperCase(AField)]; //oracle出来的全是大写
if wuxiao then v:=json.s[lowerCase(AField)];
if wuxiao then exit;
result:=variants.VarToStrDef(v, ADefault);
if (result='null') then result:=ADefault; //无效值
Except
on e:exception do untPub.writeErrorLogs('getJsonValue获取数据错误,字段-'+aField);
End;
end;
end.
文件下载地址:
https://download.youkuaiyun.com/download/gssystems/15397811