我有以下 JSON:
"printers": {
"default": "Kyocera ECOSYS M6230cidn KX",
"userMappings": [
{
"user": "050327",
"printer": "SG Fanelli"
},
{
"user": "050139",
"printer": "SGPB"
},
{
"user": "050115",
"printer": "SG Holenstein"
}
]
}
为了反序列化,我创建了以下类:
public class PrintersDto {
public string Default { get; set; }
public IEnumerable<UserPrinterDto> UserMappings { get; set; } = new List<UserPrinterDto>();
}
public class UserPrinterDto {
public string User { get; set; }
public string Printer { get; set; }
}
这是我的加载逻辑
public PrintersDto GetPrintersConfig() {
using (var configFileStream = FileIoService.ReadFile(ConfigFilePath)) {
using (var reader = new StreamReader(configFileStream)) {
var jsonString = reader.ReadToEnd();
_configData = (JObject) JsonConvert.DeserializeObject(jsonString);
var jtoken = _configData.SelectToken("printers");
return jtoken.Value<PrintersDto>();
}
}
}
当我执行此操作时,我收到异常
无法将 Newtonsoft.Json.Linq.JObject 转换为 Newtonsoft.Json.Linq.JToken
在
jtoken.Value<PrintersDto>();
有人可以帮助我,为什么会发生这种情况以及我该如何解决这个问题?
使用您的课程可以获得数据
return JObject.Parse(jsonString)["printers"].ToObject<PrintersDto>();
更换
var jtoken = _configData.SelectToken("printers");
return jtoken.Value<PrintersDto>();
与
return _configData.SelectToken("printers").ToObject<PrintersDto>();