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
}
{
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 |