Problema JSON.NET com JSONCONCOT.DESERializeObject
-
20-09-2019 - |
Pergunta
Eu tenho o seguinte código e JSON:
public class Labels
{
public Labels()
{}
public Label[] Label {get;set;}
}
public class Label
{
public Label()
{ }
public string Name { get; set; }
public int TorrentsInLabel { get; set; }
}
//...
Labels o = JsonConvert.DeserializeObject<Labels>(json);
//...
{"label":
[
["seq1",1]
,["seq2",2]
]}
Eu gostaria dessa matriz ["seq1", "1"] para deseralizar no objeto de etiquetas. o que estou perdendo? Alguns atributos?
Quando corro, recebo exceção: esperava um jsonArrayContract para o tipo 'test_jsonnet.label', obteve 'newtonsoft.json.serialization.jsonObjectContract'.
tnx
gg
Solução
Por padrão, uma classe serializa para um objeto JSON, onde as propriedades da classe se tornam propriedades no objeto JSON.
{
Name: "seq",
TorrentsInLabel: 1
}
Você está tentando serializar em uma matriz, que não é como o serializador do JSON.NET funciona por padrão.
Para obter o que quiser, você deve criar um JSONCONVERTER, ler e escrever o JSON for Label manualmente para ser o que você deseja (uma matriz).
Outras dicas
Como o JSONCONCORT SABE que "SEQ1" corresponde ao nome e "1" corresponde ao torrentsInlabel? Por favor, dê uma olhada no JsonObjectAttribute, JSONPROPTYATTIBRIPTIVE, JSONARRAYATTRIBUTO