Как десериализовать JSON с помощью Newtonsoft Deserialize C # - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь десериализовать файл JSON и хочу назначить объекту ScanResult.var text показывает все значения, но scanresult показывает нулевые некоторые нулевые значения.https://gyazo.com/ff2ce386f845394c458a88d43a1f30d8

пожалуйста, предложите, если я что-то упустил.// МОЙ файл jSon 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 голосов
/ 05 декабря 2018

Либо переименуйте свойства вашего класса, чтобы они соответствовали вашему JSON, либо переименуйте ваш JSON, чтобы он соответствовал свойствам вашего класса, либо реализуйте пользовательский JsonConverter, где вы можете реализовать произвольное отображение.

...