【问题标题】:Newtonsoft deserialize json object with to many dataNewtonsoft 反序列化包含大量数据的 json 对象
【发布时间】:2021-08-13 07:31:40
【问题描述】:

问题

我有一个服务器-客户端 C# 程序,它带有一个 RestAPI,可以从我的服务器以 JSON 格式获取数据。现在我有一个问题,即客户端和服务器在软件更新后通常不在同一个版本上。服务器发送的数据比预期的要多,这些数据无法存储在我的类中,因此 newtonsoft 对象反序列化器会引发错误。错误:“找到端点节点”。

我服务器上的模型如下所示:

public class Settings : ISettings
{
    public bool IsArchiveActive { get; set; } //This is new

    public bool HasSQLStorage { get; set; }

    public string AppKey  { get; set; }
}

但在我的客户端,还没有更新:

public class Settings : ISettings
{
    public bool HasSQLStorage { get; set; }

    public string AppKey  { get; set; }
}

我的方法,使对象去实体化:

protected async Task<T> Get<T>(string relativeAddress)
{
    string responseBody = await Get(relativeAddress);
    return JsonConvert.DeserializeObject<T>(responseBody);
}

问题 如何配置或解决此错误?如果它不在我的班级,我只是不会忽略这个属性。


它应该可以正常工作。 “找不到端点”似乎不是映射问题,而是与 API 的连接问题。 – 沉默w

我使用调试器工具多次测试我的项目,我可以看到该对象中有数据。如您所知,您可以在调试器中看到,那是在一个对象中。只有当我使用反序列化器转换它时才会弹出错误。我没有在 JsonConverter 上设置任何配置。

【问题讨论】:

  • 应该工作得很好。 “未找到端点”似乎不是映射问题,而是与 API 的连接问题。
  • 您可以尝试将 IsArchiveActive 设置为可为空,但正如@silentw 所说,这应该不是问题
  • 您遇到的错误与 JSON 序列化/反序列化没有任何关系。请在 在 Stack Overflow 上发布问题之前进行一些基本调试。
  • 能否请edit 在您的帖子中包含异常的完整ToString() 输出,包括异常类型、消息、回溯和内部异常(如果有)?一个完整的minimal reproducible example 将是理想的,并最大限度地提高在这里获得帮助的机会。

标签: c# json json.net


【解决方案1】:

我从您的问题猜测您在将 json 反序列化为字段少于输入 JSON 的对象时遇到问题。

因为我老实说,考虑到端点错误,我认为您遇到的错误更多地与 API 映射有关,并且只要 JsonSerializerSettings 没有您在其他地方设置的时髦设置,您的解决方案就应该工作。默认的 JsonSerializerSettings 应该可以正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多