mormot 使用json笔记1

文章介绍了在Lazarus中使用Mormot库处理JSON时遇到的Unicode编码问题,以及两种方法:一是通过TDocVariantData对象操作,二是利用variant类型进行对象形式访问。展示了如何初始化、添加和更新JSON数据,以及路径访问数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

mormot 使用json笔记1,

转到lazarus原来superobject用不了,lazarus原生的json(引用fpjson, jsonparser,)存在编码问题,很多网络json是用unicode编码,软件用utf8都乱码了,使用mormot的json还可以,就是引用的文件比较多

使用方法一:直接使用

procedure TForm1.Button3Click(Sender: TObject);
var
 jObject,jo1:TDocVariantData;
 s:string;
 i:integer;
begin
 jObject.InitJSON('{}',[dvoCheckForDuplicatedNames]);//
 s:='中国人';
 jObject.U['Username']:=s;//lazarus要用U,不然会乱码,Utf8编码

 jo1.Init();//:=(jobject.O_['data']^);
 jo1.U['addr']:='家庭地址';
 jo1.U['workaddr']:='工作单位';
 // jobject.O_['data']^.AddValueFromText('addr','三中');//这个也可以加添加
  jobject.O_['data']^.AddOrUpdateFrom(_json(jo1.ToJSON()),false);//.O 没有值则不添加和.O_没有则添加

//O是对象‘{}‘,A是列表'[]'
  s:=jObject.ToJSON();
  //showmessage((s));
  memo1.Append((s));
  memo1.Append(jo1.ToJSON());
  jo1.U['addr']:='新工作单位';
  jobject.O_['data']^.AddOrUpdateFrom(_json(jo1.ToJSON()),false);//更新数据
     s:=jObject.ToJSON();
  memo1.Append((s));
  memo1.Append(jo1.ToJSON());
  jo1.Clear;//不影响jobject数据
     s:=jObject.ToJSON();
  memo1.Append((s));
   memo1.Append(jo1.ToJSON());
  s:=jObject.u['Username'];


  jdata:=jobject.getValueByPath('data.addr');
  memo1.Append(jdata);
end;  

使用方法二:: variant类型,  可能用用对象形式访问! 

procedure TForm1.Button4Click(Sender: TObject);
var
jData: variant;
 jObject,jo1:TDocVariantData;
begin
 TDocVariantData(jData).InitJSON('{}');//初始化,不然后面会出错
 jdata.ymf:='张三' ;
 jdata.NAME:='loadymf';
 jobject.InitJSON('{}');//没有初始化最后会有很多null出现
 jobject.AddOrUpdateFrom(jdata,true);//jobject.O_['data']^.AddOrUpdateFrom(jdata,true);
 jobject.AddOrUpdateFrom(jdata,true);
 memo1.Append(jobject.ToJSON());
end;                   

### mORMot2 配置 HTTPS 指南 为了使应用程序通过安全的方式传输数据,配置 HTTPS 是必不可少的一环。对于 mORMot2 用户来说,实现这一目标涉及几个关键步骤。 #### 安装 OpenSSL 库 由于 mORMot2 使用 OpenSSL 来处理 SSL/TLS 加密连接,因此需要先安装 OpenSSL 库并确保其路径已加入系统的环境变量中[^1]。 #### 修改项目设置以支持 TLS/SSL 协议 在 Delphi 或 FreePascal 中开发的应用程序里,可以通过调整编译器选项来启用对 TLS/SSL 的支持。具体操作是在项目的 uses 子句中引入 `mormot.net.ssl` 和其他必要的单元文件。 ```delphi uses ..., mormot.net.ssl, ...; ``` #### 创建自签名证书或获取有效证书 可以创建一个临时使用的自签名证书用于测试目的;而对于生产环境中,则建议购买由受信任 CA (Certificate Authority) 签发的有效证书。这一步骤通常涉及到生成私钥以及相应的 CSR 文件(证书签署请求),之后提交给 CA 获取正式的 .crt/.pem 格式的公钥证书文件。 #### 更新服务器端代码以便监听 HTTPS 请求 最后,在服务端初始化阶段指定要加载的证书位置,并调用相应的方法开启 HTTPS 支持: ```delphi procedure InitializeServer(const ACertFile, AKeyFile: string); var server: TServiceContainer; begin server := TServiceContainer.Create(nil); with server.AddHttpServer('https', '8090') do begin CertFile := ACertFile; // e.g., 'server.crt' KeyFile := AKeyFile; // e.g., 'server.key' OnCreateModel := procedure(AContext: TRestServerUriContext) var model: TSQLRestServerDB; begin model := TSQLRestServerDB.Create(...); // your database connection details here AContext.Model := model; end; StartListening(True); // True means start immediately after creation. end; end; ``` 这段代码展示了如何在一个简单的 HTTP(S) 服务器实例上应用上述提到的安全措施。请注意替换示例中的占位符为实际存在的证书和密钥文件名。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值