Вам нужно удвоить символы escape \
в строковых литералах, поэтому литерал регулярного выражения обычно предпочтительнее.
Попробуйте:
'Z[\\s\\S]*?Z'
Для этого я бы использовал JSON.NET для низкоуровневого анализа потока JSON, а затем построил бы иерархию объектов из экземпляров класса ExpandoObject
.