ASP.NET C# 反序列化 Json 对象

ASP.NET C# Deserialized Json Object

我有json这样的

{

"reader_name":"FX9600EAF871",
"mac_address":"84:24:8D:FC:0E:AD",
"tag_reads":[
    {
        "epc":"E28068100000003C0A05E3B7",
        "antennaPort":"1",
        "peakRssi":"-31",
        "seenCount":"2458",
        "timeStamp":"14/02/2022 22:50:24:356",
        "channelIndex":"5"
    }
]
}

我尝试使用此代码

public class TagRead
{
    public string epc { get; set; }
    public string pc { get; set; }
    public string antennaPort { get; set; }
    public string peakRssi { get; set; }
    public string seenCount { get; set; }
    public string timeStamp { get; set; }
    public string phase { get; set; }
    public string channelIndex { get; set; }
    public string isHeartBeat { get; set; }
}

public class Hdr
{
    public string reader_name { get; set; }
    public string mac_address { get; set; }
    public List<TagRead> tag_reads { get; set; }
}


var deserialized = Newtonsoft.Json.JsonConvert.DeserializeObject<Hdr>(json);

当尝试使用

打印 reader 名称时

deserialized.reader_name

得到结果 FX9600EAF87

但是打印时

deserialized.tag_reads

什么都没得到?

我的问题是如何获取 epc 和天线端口数据?

谢谢

因为deserialized.tag_reads是一个集合而不是基本类型或字符串,你可能会得到你不想得到的结果。

How to get epc & antennaport data?

您可以尝试使用 deserialized.tag_readsforeach 来迭代集合然后执行您的逻辑

var deserialized = Newtonsoft.Json.JsonConvert.DeserializeObject<Hdr>(json);
foreach(var item in deserialized.tag_reads){
   //item.epc 
   //item.antennaPort 
}

c# online