当前位置: 首页 > 知识库问答 >
问题:

是什么原因导致JsonException:无法转换JSON值?

暴辰龙
2023-03-14

C# 10 / .NET 6 / System.Text.Json

我正在使用一个作为JSON响应返回的API。我正在尝试使用System.Text.Json将JSON响应反序列化为一个类。我收到了一个JsonException,可以帮助理解我做错了什么。

调用API并存储JSON响应:< code > string json = await Retreive。Fetch(目标);

下面是< code >控制台的输出。WriteLine(json):

[{"id": 1148082,"name": "TestGroup","group_type":"console_group","provisioning_guid": null,"member_count": 1,"current_risk_score": 36.3,"status": "active"},{"id": 1148788,"name": "Group2","group_type": "smart_group","provisioning_guid": null,"member_count": 9,"current_risk_score": 39.7,"status": "active"},{"id": 1148792,"name": "Group3","group_type": "smart_group","provisioning_guid": null,"member_count": 9,"current_risk_score": 39.7,"status": "active"}]

如果有帮助的话,这里有一个印刷精美的版本:

[
  {
    "id": 1148082,
    "name": "TestGroup",
    "group_type": "console_group",
    "provisioning_guid": null,
    "member_count": 1,
    "current_risk_score": 36.3,
    "status": "active"
  },
  {
    "id": 1148788,
    "name": "Group2",
    "group_type": "smart_group",
    "provisioning_guid": null,
    "member_count": 9,
    "current_risk_score": 39.7,
    "status": "active"
  },
  {
    "id": 1148792,
    "name": "Group3",
    "group_type": "smart_group",
    "provisioning_guid": null,
    "member_count": 9,
    "current_risk_score": 39.7,
    "status": "active"
  }
]

使用Visual Studio 2022的Paste JSON As Classes函数,我得到了以下类结构:

public class Rootobject
{
    public Class1[] Property1 { get; set; }
}

public class Class1
{
    public int id { get; set; }
    public string name { get; set; }
    public string group_type { get; set; }
    public object provisioning_guid { get; set; }
    public int member_count { get; set; }
    public float current_risk_score { get; set; }
    public string status { get; set; }
}

我正在尝试:RooTobject? gag=JsonSerializer.Deserialize

抛出JsonException:

未处理的异常。系统。text . Json . JSON异常:JSON值无法转换为KB4.Rootobject。路径:$ | line number:0 | bytepositoninline:1。at系统。系统中的text . JSON . throw helper . throw JSON exception _ deserializable convertvalue(Type property Type)。text . JSON . serialization . converters . objectdefaultconverter < code > 1。OnTryRead(Utf8JsonReader

我尝试过的一些事情:

    < li >将< code>Rootobject类的名称更改为< code>GetAllGroups < li >考虑到响应中的JSON可能格式不正确,我将它粘贴到一个文本文件中,并从那里加载JSON,然后再次尝试反序列化。 < li >回顾了用C#反序列化JSON数组,但那是使用JavaScriptSerializer。

上述两种方法都不会产生不同的结果。

我做错了什么?

共有1个答案

余信然
2023-03-14

如果json从这个开始,Rootobject类就可以工作了

{ "property1": [{"id": 1148082,"name": .....] }

并且数组有一个属性名。但是你的json没有属性1,所以你应该直接开始反序列化json数组

Class1[] result = System.Text.Json.JsonSerializer.Deserialize<Class1[]>(json); 
 类似资料:
  • 我想在不使用IDE的情况下执行我的程序。我已经创建了一个jar文件和一个可执行的jar文件。当我双击exe jar文件时,什么也没有发生,当我尝试在cmd中使用命令时,它给出以下信息: 我使用命令:java-jar Calculator.jar 我是如何创建jar的: 右键单击项目文件夹(计算器) 选择 单击Java文件夹并选择可执行罐文件,然后选择下一个 启动配置:主-计算器 创建出口目的地 命

  • 我是如何创建罐子的: 右键单击项目文件夹(计算器) 选择 单击Java文件夹并选择“Exectuable Jar文件”,然后选择Next 启动配置:main-calculator 创建导出目标 打“完”获利!嗯,也不是。

  • " boolean cancel(boolean mayInterruptIfRunning)尝试取消此任务的执行。如果任务已经完成、已经取消或由于其他原因无法取消,此尝试将会失败 https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Future.html#cancel(布尔值) 除了上面列出的原因之外,还有什么其他原因会无

  • PyCharm 2018.1.3 pro/Python 3.6.1/模块:neo4j驱动程序1.5.3 奇怪的是,如果我尝试在PyCharm中使用脚本编辑器导入neo4j. v1并运行它,我会收到错误: Traceback(最近一次调用last):文件“C:/experiment/Cypher.py”,第1行,在from neo4j.v1导入graph database ModuleNotFoun

  • minecraft 1.8.8的modcoderpack918中的有一个很大的问题。我的Java版本是1.8.0_271-B09。 我不知道我必须做什么。

  • 问题内容: 我正在尝试编写插件以在react- native中获得带有包名称和图标的应用列表。我正在以JSONArray的形式获取所有必需的数据,并且图像已存储在sdcard中。 我正在使用回调将结果(JSON数组)返回给javascript(成功或失败)。我收到上述错误。 请找到以下获取详细信息的Java代码。 包com.sampleapp; 在android.index.js中,我正在调用本机