2011-02-09 4 views
5

Мне нужно перемещаться по структуре Json, так как я бы ориентировал XML, используя XmlDocument.Как я могу перемещаться по любому дереву JSON в C#?

Структура неизвестна, и мне нужно перебирать узлы для анализа некоторых данных.

Возможно ли это?
Я знаю, что могу использовать JavaScriptSerializer для десериализации его в известный тип, но это не так, поскольку я могу получить любой действительный json.

Я использую .NET 3.5 (SP1) и не могу обновить до 4.0 на данный момент.
я повышен до .NET 4.0 для использования динамических типов (который обалденный сделал код)

+0

Возможный дубликат [Parse JSON in C#] (http://stackoverflow.com/questions/1212344/parse-json-in-c) – Jason

+3

@ Джейсон, это не дубликат, я конкретно заявляю, что не знаю, я знаю структуру, поэтому я не могу уничтожить ее до известного типа. – juan

+0

Право; связанный вопрос сосредоточен вокруг JSON.NET, а не JavaScriptSerializer. Первая позволяет вам ходить и проверять полученную структуру, последняя для статических типов. – Jason

ответ

3

Читать эту статью:

Это объясняет вам способ разбора JSON в динамический объект, в котором есть словарь.

Итак, повторение словаря было бы неплохо с LINQ, не так ли?

--- ИЛИ ЕСЛИ ВЫ В .NET 3.5 ... ---;)

Почему вы не реализовать метод расширения, как "ToDictionary"?

Вы можете получить текст JSON, позже проанализировать с регулярным выражением и разделить свойства и значения в словаре, все, что сделано с помощью предложенного метода расширения.

образец того, как она будет работать, что:

IDictionary<string, object> deserializedJson = jsonText.ToDictionary(); 

соответствует вашим потребностям?

--- ДАЖЕ ЕЩЕ ДРУГОЕ ПОПРОБУЙТЕ (теперь у вас есть дополнительные опции)! ---

Проверить этот проект с открытым кодом на CodePlex:

Он имеет LINQ-to-JSON, так что вы можете читать и писать JSON.

+0

Я забыл сказать, что я использую .NET 3.5 (Edit: Но я мог бы использовать этот JavaScriptConverter, я попробую) – juan

+0

Ooops !! Хорошо, я обновлю свой ответ –

+0

Проверьте мое обновление! –