Blitz3D+ Command Reference

JsonArrayInsert json,index,value

Parameters

json - JSON array handle to modify

index - position to insert before, 0 to JsonCount(json); passing the count appends

value - JSON handle whose value is copied into the array

Description

Inserts a copy of a JSON value before an array index.

For when position matters: an urgent quest jumps to the front of the log with index 0, a new high score slots into its ranked place, a waypoint is spliced into the middle of a route. Everything at the index and after shifts one place right, and JsonCount grows by one.

The valid index range is 0 through the current count - inserting at the count is legal and appends, which makes loops that splice "at or past the end" easy to write. Anything outside that range is a programming error that stops the program.

JsonArrayInsert copies the value, so the caller still owns the value handle afterwards and must free it separately - create, insert, free. Calling it on a non-array or with a stale value handle is a programming error; if the copy cannot be allocated, the array is left unchanged.

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

Requires Extended mode.

See also: JsonArrayAppend, JsonArrayRemove, JsonArraySet, JsonArrayGet, FreeJson.

Example

; JsonArrayInsert Example
; -----------------------
; Requires Extended mode.

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

; The hero's quest log, in priority order
quests=ParseJson("["+q+"find the key"+q+","+q+"open the vault"+q+"]")
Print "Quest log: "+JsonStringify(quests,0)

; JsonArrayInsert copies the value in BEFORE the given index -
; an urgent quest jumps to the front (index 0)
v=CreateJsonString("escape the dungeon!")
JsonArrayInsert quests,0,v
FreeJson v
Print "Urgent quest inserted at 0:"
Print "  "+JsonStringify(quests,0)

; Inserting at the current count appends to the end
v=CreateJsonString("spend the treasure")
JsonArrayInsert quests,JsonCount(quests),v
FreeJson v
Print "Long-term quest inserted at count ("+(JsonCount(quests)-1)+"):"
Print "  "+JsonStringify(quests,0)

FreeJson quests

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

End

Index