Разбор JSON с использованием F # (не сериализация) - PullRequest
3 голосов
/ 15 июня 2011

Я пытаюсь построить дерево (через различимый тип объединения) в моем приложении F # для общего представления моих данных.Я исследовал то, что было доступно в Интернете, и обнаружил такие вещи, как JavaScriptSerializer и DataContractJsonSerializer .Проблема в том, что я не сериализую данные в конкретный объект.

Вот мой дискриминируемый союз:

type ParameterTree =
    | End
    | Node of string * Dictionary<string, Parameter> * ParameterTree

Я в основном хочу иметь возможность читать из потока изаполните ParameterTree данными, которые я получаю из потока (включая соответствующие отношения родитель / потомок).Я застрял на том, с чего начать.Если кто-нибудь может указать мне правильное направление, я был бы признателен.

1 Ответ

3 голосов
/ 15 июня 2011

Я думаю, что лучшим вариантом было бы использовать более легковесную библиотеку, которая просто дает вам проанализированные пары ключ / значение в каком-то словаре .NET, а затем преобразует данные в хороший распознаваемый союз F #.

В библиотеке Json.NET есть метод JObject.Parse, который, похоже, делает именно это.Вот пример C # с их веб-сайта:

JObject o = JObject.Parse(json);
string name = (string)o["Name"];
JArray sizes = (JArray)o["Sizes"];
string smallest = (string)sizes[0];

Не должно быть слишком сложно преобразовать структуры JObject и JArray в тип объединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...