Как создать пару динамической карты (ключ/значение) в daml?

Кто-нибудь может сказать, как создать динамическую карту в daml?

Например :-

    "r": {
        "age": "60625353282101859031114084788461363500020080587865094313415945937194505171974824750979439639618231790078117695997913153028182280158293270956817260146305044078905862686951473886066227504157922639732317948213861865783124102325497565585151374966943373526284418335469629292299051938778147617771639670658248594497075691314094940022914159397222323938859281517752636680203017429647617026956252175581695660874576250787442930681560514506816227329016658293759990705003815342073366151883503197629452954311781562345819581842594066236020465123961753182058309020773681418061649718777900670943263011696071609327827547527090495890224",
        "date": "33930227444335845474579396149722513395191887056841304151045401607588110713986103544985952179129680502467202758397812691904502594999133398781137159555975198842276748775285878716049787442834165107426371815094803912796083581965009447733634656293348148948595437606939476271475431030552952270125388636479168763346464482330936428317468103615125488040789522062966612030476470133214109406709548464668078196584401233011426606023514233399430651645754688630574533918270517370420457781251431701195419637102848014219018495387764360725265552213487458604996193793206540976471775735932022220670326967614271868139279824015397443489188",
        "degree": "94808858341004493331631777171917333357972283815444545929081835374991833124284946065612985971210586127902597969703302728152460022534175027154723472042510406934880344555258073722531077161181451564209299090786136627561481605979332773556138100037771134450590602900725260401733279948397951549726707753994943703053312103881138934671846654011127881931955788595123833969753604609843352963125507482376370166331000350954810457628395253182331165109896023870193284245657012332314581004424125608270536259831058013698370013624306693237790194196784091877389630127106561294022381287912804859182067567675702085681422357984496564465462",
        "master_secret": "109073020936311733934642532108860869303966264010311301779353888907918189857647528013171943512169291139521977509493751737489987260013923678231147194077405494510223274107410554536153076108008422085071842603554192793399376319977279254823170402701833200266998727035971868415827654509991466428947106542350650111097158717468502007819034968735610787287369249366626873043368415152084012368808688818304390410682543450806037263647005198942444142199826138407925942823354304042253810593910894295644544196786293349467417304323551253070645786318590813668002873714630425476867174113548222687423879567048527440594906941198872433445811",
        "name": "44063728091696519827029612617421399766903877503282149408257474603453539221424870806676667625083129899903879864609795545604142733186296283511603607300998773994153070825006842834709065906378535410017158896078273229793619480044751938945505527503700902565652538861749098853532913870096820501957041271147126729078774701292279481222842481195825892563651561159633578690936533368871661547179038506147732586590515070760549591361005263951839342294073290786739054904991431428940153495477790831894191443041052681091676657166793180375593419596149117725528528361082210237083777126319405792192088788402270842400777723392370065090170",
        "timestamp": "42344125629444343793597578813582417505773395736356345881297692447052854992817039857187801391500056700286591587143600633454248255721712611131520475173670727926916830342505919489828154235472141088814071264843942097643815157350550414542978578034559523792920385868170989526540565401075678086336133391053018205380175670177437910845330938366658242015890490474287195001370142748707069701396065980401298172920209256360978095241783634005386047889561719303151522163703082081046080546740859235705603622867852755269702996370490332210332266838292442771591778787032071644385269747764225616864352361397079475028381825953550097317291"
    }

Это полезная нагрузка, контракт которой я должен создать. Теперь ключи (имя, возраст, дата и т.д.) не являются постоянными и могут быть любыми, а также могут быть больше или меньше. Итак, как мне создать тип данных для этого в шаблоне daml и использовать его для вставки такой полезной нагрузки?


person Harsh Multani    schedule 02.02.2021    source источник


Ответы (1)


Daml имеет встроенный тип TextMap, который по сути представляет собой словарь с фиксированным типом значения. Итак, если, как в вашем примере, все значения являются строками, вы можете написать шаблон:

template T
  with
    r : TextMap Text
    ...

В JSON API это будет представлено как

{
   "r": {
      "age": "60625353282101859031114084788461363500020080587865094313415945937194505171974824750979439639618231790078117695997913153028182280158293270956817260146305044078905862686951473886066227504157922639732317948213861865783124102325497565585151374966943373526284418335469629292299051938778147617771639670658248594497075691314094940022914159397222323938859281517752636680203017429647617026956252175581695660874576250787442930681560514506816227329016658293759990705003815342073366151883503197629452954311781562345819581842594066236020465123961753182058309020773681418061649718777900670943263011696071609327827547527090495890224",
      "date": "33930227444335845474579396149722513395191887056841304151045401607588110713986103544985952179129680502467202758397812691904502594999133398781137159555975198842276748775285878716049787442834165107426371815094803912796083581965009447733634656293348148948595437606939476271475431030552952270125388636479168763346464482330936428317468103615125488040789522062966612030476470133214109406709548464668078196584401233011426606023514233399430651645754688630574533918270517370420457781251431701195419637102848014219018495387764360725265552213487458604996193793206540976471775735932022220670326967614271868139279824015397443489188",
      "degree": "94808858341004493331631777171917333357972283815444545929081835374991833124284946065612985971210586127902597969703302728152460022534175027154723472042510406934880344555258073722531077161181451564209299090786136627561481605979332773556138100037771134450590602900725260401733279948397951549726707753994943703053312103881138934671846654011127881931955788595123833969753604609843352963125507482376370166331000350954810457628395253182331165109896023870193284245657012332314581004424125608270536259831058013698370013624306693237790194196784091877389630127106561294022381287912804859182067567675702085681422357984496564465462",
      "master_secret": "109073020936311733934642532108860869303966264010311301779353888907918189857647528013171943512169291139521977509493751737489987260013923678231147194077405494510223274107410554536153076108008422085071842603554192793399376319977279254823170402701833200266998727035971868415827654509991466428947106542350650111097158717468502007819034968735610787287369249366626873043368415152084012368808688818304390410682543450806037263647005198942444142199826138407925942823354304042253810593910894295644544196786293349467417304323551253070645786318590813668002873714630425476867174113548222687423879567048527440594906941198872433445811",
      "name": "44063728091696519827029612617421399766903877503282149408257474603453539221424870806676667625083129899903879864609795545604142733186296283511603607300998773994153070825006842834709065906378535410017158896078273229793619480044751938945505527503700902565652538861749098853532913870096820501957041271147126729078774701292279481222842481195825892563651561159633578690936533368871661547179038506147732586590515070760549591361005263951839342294073290786739054904991431428940153495477790831894191443041052681091676657166793180375593419596149117725528528361082210237083777126319405792192088788402270842400777723392370065090170",
      "timestamp": "42344125629444343793597578813582417505773395736356345881297692447052854992817039857187801391500056700286591587143600633454248255721712611131520475173670727926916830342505919489828154235472141088814071264843942097643815157350550414542978578034559523792920385868170989526540565401075678086336133391053018205380175670177437910845330938366658242015890490474287195001370142748707069701396065980401298172920209256360978095241783634005386047889561719303151522163703082081046080546740859235705603622867852755269702996370490332210332266838292442771591778787032071644385269747764225616864352361397079475028381825953550097317291"
    }
}
person bame    schedule 02.02.2021
comment
Спасибо @bame, все работает - person Harsh Multani; 02.02.2021