簡體   English   中英

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

[英]c# JsonConvert.DeserializeObject returns null with valid json file

我有以下功能:

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

我的列表為null但是返回以下錯誤:

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

我沒有以任何方式看到列表如何為null。 這行代碼沒什么令人興奮的,它仍然可以崩潰。 誰有人知道哪里出錯了?

使用File.ReadAllText讀你jsonData從磁盤文件,然后通過jsonData在參數JsonConvert.DeserializeObject

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

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM