C# класс для конкретного виджета JSON / Geckoboard / Trendline

Для Geckoboard я хочу сгенерировать JSON следующим образом:

{
"item": [
    {
      "value": "274057"
    },
    [
      "38594",
      "39957",
      "35316",
      "35913",
      "36668",
      "45660",
      "41949"
    ]
  ]
}

Я борюсь с отсутствующим свойством перед массивом.

Как должен выглядеть класс C# для сериализации?

2 ответа

Решение

Это прекрасно работает для динамических языков, таких как javaScript, но сделать это не так просто в C#. Лучшее, что я могу увидеть здесь - весь этот JSON будет отображаться в следующей структуре классов:

public class RootItem
{
    public IEnumerable<object> Item {get;set;}
}

public class ValueItem 
{
    public string Value {get;set;}
}

И в основном, вам понадобятся пользовательские правила сериализатора или связыватель параметров (в зависимости от того, где вы их используете), который возьмет этот JSON и заполнит вручную RootItem.Item Коллекция с любой коллекцией ValueItem или же IEnumerable<string>,

Вставьте свой json в http://json2csharp.com/ и сгенерируйте подходящее определение класса для сериализации этого json:

public class RootObject
{
    public List<object> item { get; set; }
}

Json item свойство, определенное как массив, содержащий смешанный тип данных (единый объект и массив), и один из возможных типов данных для хранения обоих типов в.NET: object,

Другие вопросы по тегам