C#JsonConvert.DeserializeObject使用有效的json文件返回null

时间:2018-07-20 07:28:08

标签: c# json asp.net-web-api

我具有以下功能:

[HttpPost]
[Route("api/post")]
public void AddFavourite([FromBody]int id) {

    var data = GetData(id);
    var list = JsonConvert.DeserializeObject<List<VehicleDetail>>(@"C:\FleetStudio\favVehicle.json");
    list.Add(data);
    var convertedJson = JsonConvert.SerializeObject(list, Formatting.Indented);
 }

我的列表为空,但是返回以下错误:

  

Newtonsoft.Json.JsonReaderException:'遇到意外字符   解析值时:C.路径”,第0行,位置0。'

我的data.json如下所示(并通过了https://jsonlint.com/的测试)

[
  {
    "Name": "mocksson",
    "Id": 32,
    "Alarm": null,
    "Signalinfo": null,
    "Position": null
  }
]

和我的VehicleDetail类如下所示:

 public class VehicleDetailsClass
    {
        public string Name { get; set; }
        public int Id { get; set; }
        public List<Alarms> Alarm { get; set; }
        public List<SignalInfo> Signalinfo { get; set; }
        public Position Position { get; set; }
    }

我完全看不出列表可以为空。这行代码没有什么令人兴奋的,并且它仍然设法崩溃。有人看到哪里出了问题吗?

1 个答案:

答案 0 :(得分:3)

使用File.ReadAllText从磁盘上的文件中读取jsonData,然后在jsonData中传递JsonConvert.DeserializeObject be参数

JsonConvert.DeserializeObject方法解析json字符串而不是filePath。

 string jsonDATA = File.ReadAllText(@"C:\FleetStudio\favVehicle.json")
 var list = JsonConvert.DeserializeObject<List<VehicleDetail>>(jsonDATA);