簡體   English   中英

如何使用 Delphi 和 Mormot 庫手動創建 JSON?

[英]How can you create JSON manually using Delphi with the Mormot library?

我想手動生成 JSON 來表示復雜的對象(沒有任何 RTTI 等)。

這可以使用 Mormot 來完成嗎(以及如何)?

我找到了 JSON Variant 類型,但該類型似乎無法生成像此處那樣的復雜 JSON: 在 Delphi 7 中使用 LKJSON 生成 JSON 數組

當然,我可以使用 lkJSON 之類的,但由於我的項目已經使用了 Mormot,我更願意使用已經在使用的庫。

mORMot 中有多種方法可以生成任何類型的 json 文檔。

您可以在下面找到其中一個序列化您提供的示例,恕我直言,更具可讀性和易於理解:

...
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。 請在驚人的文檔中找到更多詳細信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM