Ответ 1
С# 4.0 добавляет динамические объекты, которые можно использовать. Посмотрите .
Как преобразовать строку json-форматированных данных в анонимный объект?
С# 4.0 добавляет динамические объекты, которые можно использовать. Посмотрите .
Использование динамики выглядит примерно так:
string jsonString = "{\"dateStamp\":\"2010/01/01\", \"Message\": \"hello\" }";
dynamic myObject = JsonConvert.DeserializeObject<dynamic>(jsonString);
DateTime dateStamp = Convert.ToDateTime(myObject.dateStamp);
string Message = myObject.Message;
Я думаю, что ближе всего вы можете получить dynamic
в .NET 4.0
Причина, по которой анонимные объекты не будут работать, заключается в том, что они все еще статически типизированы, и нет возможности для компилятора предоставить intellisense для класса, который существует только в виде строки.
vb.net, используя Newtonsoft.Json:
dim jsonstring = "..."
dim foo As JObject = JObject.Parse(jsonstring)
dim value1 As JToken = foo("key")
e.g.:
dim jsonstring = "{"MESSAGE":{"SIZE":"123","TYP":"Text"}}"
dim foo = JObject.Parse(jsonstring)
dim messagesize As String = foo("MESSAGE")("SIZE").ToString()
'now in messagesize is stored 123 as String
Таким образом, вам не нужна фиксированная структура, но вам нужно знать, что вы можете там найти.
Но если вы даже не знаете, что внутри, вы можете перечислить через JObject с элементами навигации, например..first(),.next() Например: вы можете реализовать классический поиск по глубине и экранирование объекта JObject
(для преобразования vb.net в С#: http://converter.telerik.com/)