如何使用 Newtonsoft Deserialize C# 反序列化 JSON

How to deserialize JSON using Newtonsoft Deserialize C#

我正在尝试反序列化 JSON 文件并想分配给对象 ScanResult。 var text 显示所有值,但 scanresult 显示 null 一些空值。 https://gyazo.com/ff2ce386f845394c458a88d43a1f30d8

如果我遗漏了什么,请提出建议。 //我的 jSon 文件扫描测试 1-1543045410222.json 的代码

{
    "at": 1543045410222,
    "i": 1000,
    "s": {
        "Sensor1": ["OFF"],
        "Sensor2": ["OFF"],
        "DataReady1": ["OFF"],
        "DataReady2": ["OFF"],
        "CV1": [5.0],
        "CV2": [6.0]
    }
}




 //ViewModel Code is as below:

public void ResendScanResult()
    {
        var ScanActivities = scanActivityManager.GetAll();
        foreach (var item in ScanActivities)
        {
            var scanName = item.ScanName;
            var dir = _dataFilePath + scanName + "\";
            var jsonFileName = string.Format("{0}{1}-{2}.json", dir, scanName, item.ScanDateEpoch);
            string fileName = Path.GetFileName(jsonFileName);
            // ScanResult scanResult = new ScanResult();
            var text = File.ReadAllText(jsonFileName);
            //var scanResults = JsonConvert.DeserializeObject<ScanResult>(text);
            Common.Model.ScanResult scanResult = JsonConvert.DeserializeObject<Common.Model.ScanResult>(text);


            var Mvm = MonitorViewModel.Instance;
            //  TargetProvider target = Mvm.GetTargetProvider(scanResult);
            //  Mvm.PublishToServer(target, scanResult);
        }
    }

我的 scanRescult class 代码如下:

namespace ABX.Common.Model
{
    public class ScanResult
    {
        public ScanResult()
        {
            At = DateTimeOffset.Now.ToUnixTimeMilliseconds();
            Interval = 1;
        }

        public string Name { get; set; }
        public long At { get; set; }
        public long Interval { get; set; }
        public JObject Values { get; set; }
        public string FileName { get; set; }

        public JObject ToJson()
        {
            JObject json = new JObject
            {
                { "at", At },
                { "i", Interval },
                { "s", Values }
            };
            return json;
        }

重命名您的 class 属性以匹配您的 JSON,重命名您的 JSON 以匹配您的 class 属性,或者实现自定义 JsonConverter,您可以在其中实现任意映射。