У меня есть следующая переменная типа {Newtonsoft.Json.Linq.JArray}
.
properties["Value"] {[
{
"Name": "Username",
"Selected": true
},
{
"Name": "Password",
"Selected": true
}
]}
Что я хочу сделать, это преобразовать это в List<SelectableEnumItem>
где SelectableEnumItem
следующий тип:
public class SelectableEnumItem
{
public string Name { get; set; }
public bool Selected { get; set; }
}
Я довольно новичок в программировании, и я не уверен, возможно ли это. Любая помощь с рабочим примером будет принята с благодарностью.
JsonConvert.DeserializeObject(value)
вместоJsonConvert.DeserializeObject<T>(value)
Пример в вопросе является более простым случаем, когда имена свойств точно совпадают в json и в коде. Если имена свойств не полностью совпадают, например, свойство в json is
"first_name": "Mark"
и свойство в code,FirstName
тогда используйте метод Select следующим образомисточник
Возвращаемое значение API в моем случае, как показано здесь:
Преобразование массива элементов в список клиентов было обработано, как показано здесь:
источник
Я могу придумать другой метод для достижения того же
или (у меня была какая-то ситуация, что эта не сработала)
или используйте расширение linq
или
или более явно
пожалуйста, обратите внимание, в приведенном выше решении я использовал динамический объект
Я могу придумать еще несколько решений, которые представляют собой комбинации вышеуказанных решений. но я думаю, что он охватывает почти все доступные методы.
Я сам использую первый
источник
источник
public class SelectableEnumItem { [JsonProperty("Name")] public string Name { get; set; } [JsonProperty("Selected")] public bool Selected { get; set; } } public IList<SelectableEnumItem> GetListOfObject(string jsonTextHere) { return JsonConvert.DeserializeObject<List<SelectableEnumItem>>(jsonTextHere); }
Используйте IList для получения JArray Count и используйте Loop для преобразования в список
источник