Bro*_*857 5 json json-deserialization json-serialization blazor
我只是想通过在 Blazor 应用程序中使用 Http POST 方法
public async Task CreateUnit(UnitEntity unit)
{
await _http.PostJsonAsync<UnitEntity>("api/units", unit);
}
Run Code Online (Sandbox Code Playgroud)
_http 和 myObject 已在别处定义,但我收到了这个奇怪的错误。任何人都可以帮忙吗?这是我在其他地方能找到的最接近的东西:https : //github.com/dotnet/runtime/issues/30945。
完整的错误信息是
System.Text.Json.JsonException:输入不包含任何 JSON 标记。当 isFinalBlock 为 true 时,期望输入以有效的 JSON 令牌开头。路径:$ | 行号:0 | 字节位置内联:0。
这是堆栈
Program.cs Main我在方法中遇到了类似的错误CreateHostBuilder(args).Build();:
System.FormatException:“无法解析 JSON 文件。”
JsonReaderException:输入不包含任何 JSON 令牌。当 isFinalBlock 为 true 时,预计输入以有效的 JSON 令牌开头。行号: 0 | 内联字节位置:0。
对我来说,结果是本地secrets.json文件不包含有效的 json 对象。
因此,我在 Git 中看不到任何错误,也看不到回滚到工作提交的任何错误,因为文件未签入。
通过 Visual Studio 将空对象添加到文件中来解决 - 右键单击解决方案资源管理器中的项目并选择Manage User Secrets:
{
}
Run Code Online (Sandbox Code Playgroud)
就我而言,代码是这样做的:
var json = await response.Content.ReadAsStringAsync();
var result = JsonObject.Parse(json); // threw the exception mentioned in the question
Run Code Online (Sandbox Code Playgroud)
为什么会发生这种事?那是因为jsonvalue 是一个空字符串""。解析失败并显示空字符串。
通过这个简单的更改修复了它:
var json = await response.Content.ReadAsStringAsync();
var result = string.IsNullOrEmpty(json) ? null : JsonObject.Parse(json);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
14659 次 |
| 最近记录: |