PowerBuilder
PowerBuilder
Get the Index of a JSON Member
See more JSON Examples
This example demonstrates how to get the index of a given member by name.
{
"name": "donut",
"image":
{
"fname": "donut.jpg",
"w": 200,
"h": 200
},
"thumbnail":
{
"fname": "donutThumb.jpg",
"w": 32,
"h": 32
}
}
Chilkat PowerBuilder Downloads
integer li_rc
integer li_Success
oleobject loo_Json
string ls_JsonStr
integer li_NameIndex
integer li_ThumbIndex
integer li_FnameIndex
oleobject loo_ImageObj
li_Success = 0
loo_Json = create oleobject
li_rc = loo_Json.ConnectToNewObject("Chilkat.JsonObject")
if li_rc < 0 then
destroy loo_Json
MessageBox("Error","Connecting to COM object failed")
return
end if
// This is the above JSON with whitespace chars removed (SPACE, TAB, CR, and LF chars).
// The presence of whitespace chars for pretty-printing makes no difference to the Load
// method.
ls_JsonStr = "{~"name~": ~"donut~",~"image~":{~"fname~": ~"donut.jpg~",~"w~": 200,~"h~": 200},~"thumbnail~":{~"fname~": ~"donutThumb.jpg~",~"w~": 32,~"h~": 32}}"
li_Success = loo_Json.Load(ls_JsonStr)
if li_Success = 0 then
Write-Debug loo_Json.LastErrorText
destroy loo_Json
return
end if
// The top-level JSON object has three members: name, image, and thumbnail.
li_NameIndex = loo_Json.IndexOf("name")
// The index of the "name" member is 0.
Write-Debug "nameIndex = " + string(li_NameIndex)
li_ThumbIndex = loo_Json.IndexOf("thumbnail")
// The index of the "thumbnail" member is 2.
Write-Debug "thumbIndex = " + string(li_ThumbIndex)
// The "fname" member is NOT a direct member of the top-level JSON object.
// It is a member of a nested object. If we try to get the index of this
// member using the top-level JSON object, it is not found (and returns -1).
li_FnameIndex = loo_Json.IndexOf("fname")
// The fnameIndex is -1 (not found). This is correct.
Write-Debug "fnameIndex = " + string(li_FnameIndex)
// Get the "image" object.
loo_ImageObj = create oleobject
li_rc = loo_ImageObj.ConnectToNewObject("Chilkat.JsonObject")
loo_Json.ObjectOf2("image",loo_ImageObj)
// Now we can get the index of the "fname" object, because it is a direct
// member of the "image" object:
li_FnameIndex = loo_ImageObj.IndexOf("fname")
Write-Debug "fnameIndex = " + string(li_FnameIndex)
destroy loo_Json
destroy loo_ImageObj