Code: Select all
Global NewList packages.s()
Declare findIsMandatory(JSONValue, getMembers=#NO)
Procedure.i findIsMandatory(JSONValue, getMembers=#NO)
Protected key$
Select JSONType(JSONValue)
Case #PB_JSON_Object
If ExamineJSONMembers(JSONValue)
While NextJSONMember(JSONValue)
Select JSONType(JSONValue)
Case #PB_JSON_Number
; Debug JSONMemberKey(JSONValue) + " = " + GetJSONInteger( JSONMemberValue(JSONValue) )
Case #PB_JSON_String
; Debug JSONMemberKey(JSONValue) + " = " + GetJSONString( JSONMemberValue(JSONValue) )
Case #PB_JSON_Boolean
; Debug JSONMemberKey(JSONValue) + " = " + GetJSONBoolean( JSONMemberValue(JSONValue) )
Case #PB_JSON_Object
key$ = JSONMemberKey(JSONValue)
If getMembers
AddElement( Packages() )
packages() = key$
Else
If key$ = "Packages"
FindIsMandatory( JSONMemberValue(JSONValue), #YES)
EndIf
EndIf
EndSelect
Wend
EndIf
; Case #PB_JSON_Array
EndSelect
ProcedureReturn #False
EndProcedure
Define JSON$, JSONRoot
fd = ReadFile(#PB_Any, "/myFile.json")
If fd
length = Lof(fd)
JSON$ = ReadString(fd, #PB_UTF8 | #PB_File_IgnoreEOL, length)
CloseFile(fd)
If ParseJSON(0, JSON$)
JSONRoot = JSONValue(0)
FindIsMandatory(JSONRoot)
Else
Debug "err JSON"
EndIf
If ListSize( Packages() )
ForEach packages()
Debug packages()
Next
EndIf
EndIf