Эти элементы со знаком доллара ($) обычно являются метаданными, а НЕ полями. Когда JSON.NET сериализует объект и вы указываете ему обрабатывать типы объектов, он вставит $ items, который обозначает метаданные для правильной десериализации в дальнейшем.
Если вы хотите обрабатывать элементы $ как метаданные, используйте JsonSerializerSettings. Например:
Dim jsonSettings As New Newtonsoft.Json.JsonSerializerSettings With {.TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All}
Dim jsonOut As String = Newtonsoft.Json.JsonConvert.SerializeObject(objects, jsonSettings)
TypeNameHandling = Newtonsoft.Json.TypeNameHandling.All указывает JSON обрабатывать типы данных, полагаясь на $ для получения информации.
Надеюсь, это поможет ..