Blitz3D+ Command Reference

JsonIsNull ( json )

Parameters

json - JSON handle to test

Description

Returns true only for a real JSON null value.

JSON separates three ideas that games often blur together, and JsonIsNull is how you tell them apart:

1. The field exists and is deliberately empty - "guild": null in the save. JsonObjectGet returns a positive handle and JsonIsNull returns true.
2. The field does not exist at all - JsonObjectGet returns 0. Do not call JsonIsNull on that: 0 is not a handle, and passing it is a programming error.
3. The field exists with a real value - JsonIsNull returns false.

It is a convenience for JsonKind(json)=JSON_NULL, and false for every other kind including Boolean false, 0 and an empty string. Nulls are created with CreateJsonNull or parsed from the literal null.

For the full rules, see the Application Data language reference.

Requires Extended mode.

See also: CreateJsonNull, JsonKind, JsonObjectGet, JsonObjectHas.

Example

; JsonIsNull Example
; ------------------
; Requires Extended mode.

q$=Chr(34)  ; Double-quote character, for building JSON text

; This hero has no guild yet - the save stores null for it
save=ParseJson("{"+q+"player"+q+":"+q+"Aria"+q+","+q+"guild"+q+":null}")

; JsonIsNull is true only for a real JSON-null handle
guild=JsonObjectGet(save,"guild")
Print "guild handle = "+guild+" (a real handle, not zero)"
Print "JsonIsNull(guild)  = "+JsonIsNull(guild)

player=JsonObjectGet(save,"player")
Print "JsonIsNull(player) = "+JsonIsNull(player)+" ("+JsonText(player)+" is a string)"
Print ""

If JsonIsNull(guild)
    Print "Aria has not joined a guild yet."
EndIf

FreeJson player
FreeJson guild
FreeJson save

Print ""
Print "Press any key to close the example"
WaitKey

End

Index