我具有以下功能:
[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; }
}
我完全看不出列表可以为空。这行代码没有什么令人兴奋的,并且它仍然设法崩溃。有人看到哪里出了问题吗?
答案 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);