Как преобразовать JSON в UML посредством C#?

Очень хочу попробовать создать приложение, которое бы подобно MySQL WorckBench строило план выполнения запроса графически. На вход подаётся, как раз таки этот план в формате JSON.
Проблема такова, этот код всегда динамический, он скалируется от вида запроса селект, например:
{
  "query_block": {
    "select_id": 1,
    "table": {
      "table_name": "totalprice",
      "access_type": "ALL",
      "rows": 1,
      "filtered": 100
    }
  }
}

или
{
  "query_block": {
    "select_id": 1,
    "grouping_operation": {
      "using_temporary_table": true,
      "using_filesort": true,
      "nested_loop": [
        {
          "table": {
            "table_name": "film",
            "access_type": "range",
            "possible_keys": [
              "PRIMARY",
              "idx_title"
            ],
            "key": "idx_title",
            "used_key_parts": [
              "title"
            ],
            "key_length": "767",
            "rows": 43,
            "filtered": 100,
            "using_index": true,
            "attached_condition": "(`sakila`.`film`.`title` like 'W%')"
          }
        },
        {
          "table": {
            "table_name": "inventory",
            "access_type": "ref",
            "possible_keys": [
              "PRIMARY",
              "idx_fk_film_id"
            ],
            "key": "idx_fk_film_id",
            "used_key_parts": [
              "film_id"
            ],
            "key_length": "2",
            "ref": [
              "sakila.film.film_id"
            ],
            "rows": 2,
            "filtered": 100,
            "using_index": true
          }
...

Т.е, как я понял десериализовать такой JSON посредством DataContractJsonSerializer не получится, потому как я заранее не знаю структуру класса. Можно попробовать это сделать динамически, с помощью JsonConvert.DeserializeObject, например, и получить что-то типа dynamic или Dictonary, но всё это кажется слишком запутанно.

Вопрос: Нет ли способа попроще преобразовать динамический JSON вот что-то похожее на uml-диаграмму внутри кода, т.е посредством каких-нибудь библиотек?
  • Вопрос задан
  • 2611 просмотров
Пригласить эксперта
Ответы на вопрос 1
@snuffi
вот хорошая библиотека json.codeplex.com
ее api: james.newtonking.com/json/help/index.html

пример использования:
Product product = new Product();
product.ExpiryDate = new DateTime(2008, 12, 28);

JsonSerializer serializer = new JsonSerializer();
serializer.Converters.Add(new JavaScriptDateTimeConverter());
serializer.NullValueHandling = NullValueHandling.Ignore;

using (StreamWriter sw = new StreamWriter(@"c:\json.txt"))
using (JsonWriter writer = new JsonTextWriter(sw))
{
serializer.Serialize(writer, product);
// {"ExpiryDate":new Date(1230375600000),"Price":0}
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы