JsonDocumentfuncties

Met de JsonDocumentfuncties kunnen gegevens uit JSON documenten gelezen worden. JSON is een afkorting van  Javascript Object Notation en is net zoals XML een gestandaardiseerd gegevensformaat. JSON maakt gebruik van paren met een naam en een waarde zoals beschreven op: http://json.org/. Het formaat wordt hoofdzakelijk gebruikt voor de uitwisseling van gegevens tussen servers en webapplicaties en kan gezien worden als een vereenvoudigd alternatief voor XML. Met Jason_GetValue kan een waarde uit een JSON document worden gelezen. De eerste waarde van een reeks (of array) wordt met Json_FirstValue en met Json_NextValue de volgende waarde.

Json_GetValue
Json_FirstValue
Json_NextValue

Voorbeeld:
{
 String sJsonDoc, sOrder, sOrders, sNaam, sContact, sContactNaam, sItems
 String sItem,sNpc,sOmschr,sBesteld,sUitVrrd,sMaken,sStkPrys
 integer iCnt
 Copy(sJsonDoc,
 
"{"
   '
Orders': "["
    "{"
       '
Id': 12345 ,
       '
Naam': 'Demo BV' ,
       '
Adres': 'Voorbeeldstraat 1' ,
       '
PostCode': '1234 AB' ,
       '
Woonplaats': 'Demostad' ,
     'Telefoon': '012-3456789' ,
       '
ContactPersoon': "{"
         'Naam': 'V.O. Orbeeld' ,
         '
Email1': 'v.o.orbeeld@demobv.nl' ,
         'TelNr': '06-12345678'
       "}" ,
       '
AfleverAdres': "{"
           '
Afdeling': 'Goederenontvangst' ,
           '
Adres1': 'Beeldweg 9' ,
           '
PostCode': '1234 AC' ,
           'Woonplaats': 'DemoStad'
       "}" ,
       '
Items': "["
         "{"
           '
Npc': 'Betaalmethode' ,
           '
Omschrijving': 'iDEAL'
         "}" ,
         "{"
           '
Npc': 'Installatie' ,
           '
Besteld': 1 ,
           '
Maken': 1 ,
           '
Omschrijving': 'Installatie en Configuratie' ,
           '
StkPrys': 1500
         "}" ,
         "{"
           '
Npc': "320" ,
           '
Omschrijving': 'Enterprise Webservices' ,
           '
Besteld>': 1 ,
           '
Eenh': 'Stuk' ,
           '
APE': 1 ,
           '
UitVrrd': 1 ,
           '
StkPrys': 1375
         "}"
       "]"
     "}",
     "{"
       '
Id': 98754 ,
       'Naam': 'Tester BV' ,
       '
Adres': 'Onderzoeksstraat 17' ,
       '
PostCode': '4321 AA' ,
       '
Woonplaats': 'Testdorp' ,
       '
Telefoon': '098-765321' ,
       '
ContactPersoon': "{"
         '
Naam': 'P.R Obeer' ,
         '
Email1': 'p.r.obeer@testerbv.nl' ,
         'TelNr': '06-8765321'
       "}" ,

       'AfleverAdres': "{"
         '
Afdeling': 'Inkoop' ,
         '
Adres1': 'Probeerweg 7' ,
         '
PostCode': '4321 BB' ,
         '
Woonplaats': 'Testdorp'
       "}" ,
       'Items': "["
         "{"
           '
Npc': 'Installatie' ,
           '
Besteld': 1 ,
           '
Maken': 1 ,
           '
Omschrijving': 'Installatie en Configuratie' ,
           '
StkPrys': 1500
         "}" ,
         "{"
           '
Npc': '223' ,
           '
Omschrijving': 'eTax module voor automatische BTW en ICP aangifte.' ,
           '
Besteld': 1 ,
           '
Eenh': 'Stuk' ,
           '
APE': 1 ,
           '
UitVrrd': 1 ,
           '
StkPrys': 475
         "}" ,
         "{"
           '
Npc': '330' ,
           '
Omschrijving': 'SBR Verzendfaciliteit' ,
           '
Besteld': 1 ,
           '
Eenh': 'Stuk' ,
           '
APE': 1 ,
           '
UitVrrd': 1 ,
           '
StkPrys': 300
         "}"
       "]"

     "}"
   "]"
 "}"
)
 ReplaceString(
sJsonDoc,"'",$(34))
 Json_GetValue(Orders,sJsonDoc,sOrders)
 While Json_GetValue([iCnt],sOrders,sOrder)
  Json_GetValue(Naam,sOrder,sNaam)
  json_GetValue(ContactPersoon,sOrder,sContact)
  Json_GetValue(Naam,sContact,sContactNaam)
}

Naam: [sNaam] Contact: [sContactNaam]
{
  Tt = 0
  Json_GetValue(Items,sOrder,sItems)
  If Json_FirstValue(sItems,sItem)
}
Npc Omschrijving Besteld UitVrrd Maken StukPrys Totaal
{
   DoSub ShowItem
   While Json_NextValue(sItems,sItem)
    DoSub ShowItem
   Wend
}
           Totaal

[Tt]

{
  Endif
  iCnt = iCnt + 1
 Wend
 Subroutine ShowItem
  Json_GetValue(Npc,sItem,sNpc)
  Json_GetValue(Omschrijving,sItem,sOmschr)
  Json_GetValue(Besteld,sItem,sBesteld)
  Json_GetValue(UitVrrd,sItem,sUitVrrd)
  Json_GetValue(Maken,sItem,sMaken)
  Json_GetValue(StkPrys,sItem,sStkPrys)
  Aantal = [sUitVrrd] + [sMaken]
  If Aantal>[sBesteld]
   Aant = [sBesteld]
  Endif
  Totaal = Aantal*[sStkPrys]
}
[sNpc] [sOmschr] [sBesteld] [sUitVrrd] [sMaken] [sStkPrys]

[Totaal]

{
  Tt = Tt +Totaal
 EndSub
}



Resultaat:


Naam: Demo BV Contact: V.O. Orbeeld
Npc Omschrijving Besteld UitVrrd Maken StukPrys Totaal
Betaalmethode iDEAL        

0,00

Installatie Installatie en Configuratie 1   1 1500

1.500,00

320 Enterprise Webservices 1 1   1375

1.375,00

          Totaal

2.875,00


Naam: Tester BV Contact: P.R Obeer
Npc Omschrijving Besteld UitVrrd Maken StukPrys Totaal
Installatie Installatie en Configuratie 1   1 1500

1.500,00

223 eTax module voor automatische BTW en ICP aangifte. 1 1   475

475,00

330 SBR Verzendfaciliteit 1 1   300

300,00

          Totaal

2.275,00