mormot 使用json笔记1

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;                   

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值