Удаление десериализации json анонимному объекту в С#

Как преобразовать строку json-форматированных данных в анонимный объект?

Ответ 1

С# 4.0 добавляет динамические объекты, которые можно использовать. Посмотрите .

Ответ 2

Использование динамики выглядит примерно так:

string jsonString = "{\"dateStamp\":\"2010/01/01\", \"Message\": \"hello\" }";
dynamic myObject = JsonConvert.DeserializeObject<dynamic>(jsonString);

DateTime dateStamp = Convert.ToDateTime(myObject.dateStamp);
string Message = myObject.Message;

Ответ 3

Я думаю, что ближе всего вы можете получить dynamic в .NET 4.0

Причина, по которой анонимные объекты не будут работать, заключается в том, что они все еще статически типизированы, и нет возможности для компилятора предоставить intellisense для класса, который существует только в виде строки.

Ответ 4

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/)