#c# #json #jsonconvert
#c# #json #jsonconvert
Вопрос:
Я вернул эту строку в свой код:
string json = "[[{'nome':'joe','cpf':'54'},{'id':'8','nome':'Legendagem','valor':'5'}],[{'nome':'jane','cpf':'22'},{'id':'1','nome':'Legendagem2','valor':'6'}]]";
и у меня есть 3 класса:
public class ItemCart
{
public UserCart user { get; set; }
public CursoCart curso { get; set; }
}
public class UserCart
{
public string nome { get; set; }
public string email { get; set; }
public string cpf { get; set; }
}
public class CursoCart
{
public string id { get; set; }
public string desc { get; set; }
public string valor { get; set; }
}
я хочу, чтобы класс класса UserCart / CursoCart был заполнен, чтобы я мог выполнять цикл внутри itemCart и получать значения, длину и т. Д. Элементов UserCart / CursoCart
, например:
UserCart user1 = itemCart[0].user;
предположим, что я не могу изменить строку, я пытаюсь преобразовать это, но теперь работаю:
List<ItemCart> itemCart = JsonConvert.DeserializeObject<List<ItemCart>>(json);
спасибо за любую помощь.
Комментарии:
1. просто создайте класс, который имеет свойства из обоих
UserCart
CursoCart
классов и, а затем используйтеJsonConvert.DeserializeObject<List<UserOrCursoCart[]>>(json)
… десериализатор не может угадать тип на основе существования свойства…2. спасибо @Selvin, принял приведенное ниже (потому что пример), но ваше понимание было правильным, указывающим на то же направление (имея только один класс)
Ответ №1:
Как я вижу из вашего json, это массив. Следующая таблица элементов и десериализация могут вам подойти.
public class Program
{
public static void Main()
{
string json = "[[{'nome':'joe','cpf':'54'},{'id':'8','nome':'Legendagem','valor':'5'}],[{'nome':'jane','cpf':'22'},{'id':'1','nome':'Legendagem2','valor':'6'}]]";
var ItemCartList = JsonConvert.DeserializeObject<List<Item[]>>(json);
}
}
public class ItemCart
{
public Item[][] ItemList { get; set; }
}
public class Item
{
public string nome { get; set; }
public string cpf { get; set; }
public string id { get; set; }
public string valor { get; set; }
}