首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Delphi和Mormot库手动创建JSON?

如何使用Delphi和Mormot库手动创建JSON?
EN

Stack Overflow用户
提问于 2017-10-09 15:20:41
回答 1查看 823关注 0票数 1

我想要生成JSON来表示复杂的对象,手动的(没有任何RTTI等等)。

是否可以使用Mormot (以及如何)来完成这一任务?

我已经找到了JSON变体类型,但该类型似乎无法生成像下面这样的复杂JSON:在Delphi 7中用LKJSON生成JSON数组

当然,我可以像使用lkJSON那样使用它,但是由于我的项目已经使用了Mormot,所以我更愿意使用已经使用的库。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-08 17:13:05

mORMot中有多种方法生成任何类型的json文档。

您可以在下面找到其中一个序列化您提供的示例,IMHO更易读和更容易理解:

代码语言:javascript
复制
...
uses SynCommons;
...
var parcelas , venda , vendas , json : variant;
begin
  parcelas := _Obj(['numero',1,
                    'valor',50
                   ]);
  venda    := _Obj(['nsuOrigem','1',
                    'data','2014-03-14',
                    'nrParcelas',1,
                    'valor',50,
                    'parcelas' , _Arr([parcelas
                                      ])
                   ]);
  vendas := _Arr([venda]);
  venda := _Obj(['nsuOrigem','2',
                 'data','2014-03-14',
                 'nrParcelas',1,
                 'valor',50,
                 'parcelas' , _Arr([parcelas  //in this case this object is the same
                                   ])
                ]);
  TDocVariantData(vendas).AddItem(venda);
  json := _Obj(['nrVendas',2,
                'totalVendas',100.0,
                'vendas',vendas
               ]);
  //
  assert(json.nrVendas=2);
  assert(json.vendas._count=2);
  assert(json.vendas._(0).nsuOrigem='1');
  assert(json.vendas._(1).nsuOrigem='2');
  assert(json.vendas._(1).parcelas._(0).valor=50);
end;

这应该从Delphi 7到10.4起作用。请在令人惊叹的文档中找到更多详细信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46649857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档