从firebase中反序列化.netcore中的.json(无法反序列化当前JSON数组(例如[1,2,3]))

时间:2018-07-29 21:07:49

标签: c# json firebase asp.net-core json.net

我有一个具有以下格式的JSON:

{"-LIbdaC_Vye-c4eNCxUs":
[
{"area":"XXXXXX","cargo":"XXXXX XXXXX","data_de_admissao":"XXXXXXXX","matricula":"XXXXXX","nome":"XXXXXXX","salario_bruto":"XXXXXXXXX"},
{"area":"XXXXXX","cargo":"XXXXX XXXXX","data_de_admissao":"XXXXXXXX","matricula":"XXXXXX","nome":"XXXXXXX","salario_bruto":"XXXXXXXXX"},
{"area":"XXXXXX","cargo":"XXXXX XXXXX","data_de_admissao":"XXXXXXXX","matricula":"XXXXXX","nome":"XXXXXXX","salario_bruto":"XXXXXXXXX"}]}

这个班级:

 public class Funcionario
{
    [JsonProperty(PropertyName = "area", NullValueHandling = NullValueHandling.Ignore)]
    public string Area { get; set; }

    [JsonProperty(PropertyName = "cargo", NullValueHandling = NullValueHandling.Ignore)]
    public string Cargo { get; set; }

    [JsonProperty(PropertyName = "data_de_admissao", NullValueHandling = NullValueHandling.Ignore)]
    public string DataAdmissao { get; set; }

    [JsonProperty(PropertyName = "matricula", NullValueHandling = NullValueHandling.Ignore)]
    public string Matricula { get; set; }

    [JsonProperty(PropertyName = "nome", NullValueHandling = NullValueHandling.Ignore)]
    public string Nome { get; set; }

    [JsonProperty(PropertyName = "salario_bruto", NullValueHandling = NullValueHandling.Ignore)]
    public string SalarioBruto { get; set; }
}

我正在尝试使用JSON数据实例化该类,该数据是对象列表

dynamic data = JsonConvert.DeserializeObject<dynamic>(teste);
var list = new List<Funcionario>();
foreach (var itemDynamic in data)
{
    list.Add(JsonConvert.DeserializeObject<Funcionario>(((JProperty)itemDynamic).Value.ToString()));
}

不是从JSON中拾取元素,而是抢救了整个JSON。

Cannot deserialize the current JSON array (e.g. [1,2,3]) into type

我总是会收到此错误,我在这里看到的所有解决方案都不适用于这种JSON

1 个答案:

答案 0 :(得分:0)

由于包装对象,您需要使用字典。

var data = JsonConvert.DeserializeObject<Dictionary<string, List<Funcionario>>>(teste);

List<Funcionario> list = data.First().Value;