Datasnap 使用JSON 传递数据的简易方法

在上一篇文章中,使用了 OleVariant;


本文将介绍使用JSON方式来传递。。。


经测试在 windows下、Android 下都没有问题。。苹果则未测试。。。


服务端:


function TServerMethods1.CheckUsernameAndPassword3(U, P: string): TJSONObject;
var
  JO:TJSONObject;
  UserInfo :TLoginUserInfo;
begin
  UserInfo.LoginState := 255 ;   //Defautl: Unknown error
  UserInfo.IsSuperUser := false;
        UserInfo.UserCode := '';
        UserInfo.UserCode := '';
        UserInfo.UserName := '';
        UserInfo.Password := '';
        UserInfo.Deportment := '';
        UserInfo.MachineCode := '';  //设备编号
        UserInfo.AutoPromptMsg :='';
        UserInfo.UserClass :=0 ;
        UserInfo.ProductionWorkShop :='' ;
  with QRY  do begin
    Close;
    SQL.Text :=''; //略过
    Open;
    if not IsEmpty then begin
      if P <> FieldByName('MM').AsString  then begin
        UserInfo.LoginState :=1;
      end else
      if FieldByName('SFJY').AsBoolean then begin
        UserInfo.LoginState :=3;
      end else begin
        UserInfo.LoginState :=0;
        UserInfo.IsSuperUser := FieldByName('CJYH').AsBoolean;
        UserInfo.UserCode := U;
        UserInfo.UserCode := FieldByName('XH').AsString;
        UserInfo.UserName := FieldByName('MC').AsString;
        UserInfo.Password := FieldByName('MM').AsString;
        UserInfo.Deportment := FieldByName('BMBH').AsString;
        UserInfo.MachineCode := FieldByName('SBBH').AsString;  //设备编号
        UserInfo.AutoPromptMsg :='';
        UserInfo.UserClass :=FieldByName('jtsclx').AsInteger ;
        UserInfo.ProductionWorkShop :=FieldByName('SCCJ').AsString ;
      end;
    end else UserInfo.LoginState :=2;
    Close;
    //读是否是验厂
    SQL.Text :=<span style="font-family: Arial, Helvetica, sans-serif;">''; //略过</span>
    Open;
    UserInfo.FactoryEvaluation := FieldByName('FE').AsBoolean;
    Close;
  end;

    JO:=TJSONObject.Create;
    JO.AddPair('LoginState',TJSONNumber.Create(UserInfo.LoginState));
    if UserInfo.IsSuperUser  then
      JO.AddPair('IsSuperUser',TJSONTrue.Create)
    else
      JO.AddPair('IsSuperUser',TJSONFalse.Create);
    JO.AddPair('UserCode',TJSONString.Create(UserInfo.UserCode));
    JO.AddPair('UserName',TJSONString.Create(UserInfo.UserName));
    JO.AddPair('Password',TJSONString.Create(UserInfo.Password));
    JO.AddPair('Deportment',TJSONString.Create(UserInfo.Deportment));
    JO.AddPair('MachineCode',TJSONString.Create(UserInfo.MachineCode));
    JO.AddPair('AutoPromptMsg',TJSONString.Create(UserInfo.AutoPromptMsg));
    JO.AddPair('ProductionWorkShop',TJSONString.Create(UserInfo.ProductionWorkShop) );
    JO.AddPair('UserClass',TJSONNumber.Create(UserInfo.UserClass));
    Result := JO;



客户端:

function Tdm.PubF_CheckLoginUsername3(U, P: string): TLoginUserInfo;
var
  JO:TJSONObject;
begin
  JO := dm.CheckUsernameAndPassword3(U,P);
  Result.LoginState         := StrToIntDef(JO.GetValue('LoginState').Value,255) ;
  Result.IsSuperUser        := JO.GetValue('IsSuperUser').Value='True' ;
  Result.UserCode           := JO.GetValue('UserCode').Value ;
  Result.UserName           := JO.GetValue('UserName').Value ;
  Result.Password           := JO.GetValue('Password').Value ;
  Result.Deportment         := JO.GetValue('Deportment').Value ;
  Result.MachineCode        := JO.GetValue('MachineCode').Value ;
  Result.AutoPromptMsg      := JO.GetValue('AutoPromptMsg').Value ;
  Result.ProductionWorkShop := JO.GetValue('ProductionWorkShop').Value ;
  Result.UserClass          := StrToIntDef(JO.GetValue('UserClass').Value,0);
end;




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值