I think the problem was discussed in Strange .Add behaviour in new JSON implementation - #7 by Greg_O_Lone
Basically, a New JSONItem defaults to a single item, not an array. So Append fails silently. This is a change from the old functionality where an empty JSONItem would switch to either based on the first thing added: Value implies a single item, Add/Append implies an array.
To get an array, use
Var RecordsJSON As New JSONItem("[]")