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
,