【问题标题】:Unexpected character encountered while parsing Value asp.net Core解析Value asp.net Core时遇到意外字符
【发布时间】:2018-06-08 22:48:59
【问题描述】:
这是我正在尝试做的,但收到此错误
解析值时遇到意外字符
var searchModel = Newtonsoft.Json.JsonConvert.DeserializeObject<EmployeeSearchModel>(filter);
型号
public class EmployeeSearchModel
{
public string EmployeeNameSearch { get; set; } = null;
public string SearchFilter { get; set; } = null;
}
Error Detail
【问题讨论】:
标签:
asp.net
asp.net-web-api
asp.net-core
json.net
asp.net-core-webapi
【解决方案1】:
过滤器变量中的字符串
我相信你所说的翻译应该是“传入的过滤器变量是一个字符串”。
当收到此错误时,也可能意味着您的控制器的操作方法尚未设置为接收要反序列化的特定类。
例如,这将失败并显示您的错误消息:
public IActionResult Post([FromBody] string filter)
{
var searchModel = Newtonsoft.Json.JsonConvert.DeserializeObject<EmployeeSearchModel>(filter);
但以下操作会成功,因为我们已经确定了要反序列化的特定对象并且不必调用 Newtonsoft,因为 .Net Core 已经为我们反序列化了它:: p>
public IActionResult Post([FromBody] EmployeeSearchModel searchModel)
{
If (searchModel.EmployeeNameSearch == "OmegaMan")
...
因此,请确保您的 JSON 传入正文与类相同。
【解决方案2】:
我怀疑 filter 不是有效的 JSON。
其实可以通过下面的代码重现准确的错误:
Newtonsoft.Json.JsonConvert.DeserializeObject("a");
//Error: Unexpected character encountered while parsing value: a. Path '', line 0, position 0.