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

时间:2018-12-05 05:00:50

标签: c# json mvvm json-deserialization

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

如果我缺少什么,请提出建议。 // MY jSon File SCAN Test 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类代码如下:

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;
        }

1 个答案:

答案 0 :(得分:1)

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