C# 反序列化对象时,无法将System.String类型的对象转换为System.Byte[]类型

C# 反序列化对象时,无法将System.String类型的对象转换为System.Byte[]类型,c#,json,serialization,C#,Json,Serialization,我在C#中有一个类,它将从移动应用程序(JSON对象)发送的InspectionDetails映射到Web API服务。我最近在类中添加了一个属性来处理从移动应用程序发送图像。但是当反序列化JSON时,我得到了一个错误 无法将System.String类型的对象转换为System.Byte[]类型。 我在C#的班级是这样的 public class InspectionDetails { public int UserId { get; set; } public List<

我在C#中有一个类,它将从移动应用程序(JSON对象)发送的InspectionDetails映射到Web API服务。我最近在类中添加了一个属性来处理从移动应用程序发送图像。但是当反序列化JSON时,我得到了一个错误

无法将System.String类型的对象转换为System.Byte[]类型。

我在C#的班级是这样的

public class InspectionDetails
{
    public int UserId { get; set; }
    public List<byte[]> Images { get; set; }
}

如何在JSON中反序列化字节数组?我需要反序列化JSON以获取图像

这似乎适用于JSON.NET 8.0.2

    var jsonSettings = new JsonSerializerSettings
    {
        TypeNameHandling = TypeNameHandling.Objects,
        TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple
    };
    var result = JsonConvert.DeserializeObject<T>(jsonObject, jsonSettings);
var jsonSettings=新的JsonSerializerSettings
{
TypeNameHandling=TypeNameHandling.Objects,
TypeNameAssemblyFormat=FormatterAssemblyStyle.Simple
};
var result=JsonConvert.DeserializeObject(jsonObject,jsonSettings);

您不认为生成json的代码或json消息的示例可能与您发布的问题略有关联吗?示例json现在添加到原始帖子中。看起来您的
图像
字符串是无效的Base64。如果我做了
Convert.FromBase64String(“fFCVKyfUYq72+N0M3IzaihLH0/rMDSwdbPHTXpwkQTw+Fp1NlYKvyyp0e+yixoove24ous2essafd4kien==”我得到一个异常抛出
“Base-64字符串中的无效字符。”
。base64字符串是如何生成的?我截断了图像,因为它太长,无法在此处发表评论。@Chris-好的,如果我从注释中重新复制字符串,似乎存在编码问题。但我最初没有这样做,我从问题中复制了它,因为我还没有发表评论。如果我从问题中重新复制,我仍然会得到base64错误。但是如果我在dotnetfiddle上运行,也没有例外,而是通过往返base64编码来更改字符串:在我的系统上一定是奇怪或过时的东西。我尝试运行此代码,它成功了。。。但是我没有通过设置就运行了它,它仍然工作。。。你能解释一下为什么你需要这些设置,特别是你认为这两种设置中的哪一种解决了问题吗?我认为这一切都取决于你使用的版本,如果它在这两种情况下都“有效”。TypeNameHandling:获取或设置序列化程序处理类型名写入和读取的方式。TypeNameAssemblyFormat:获取或设置序列化程序写入和解析类型名程序集的方式。
{"UserId":1001872,"Images":["fFCVKyfUYq72+N0M3IzaihLH0/rMDSwdbPHTXpwkQTw+Fp1NlYKvyyp0e+yIxoOOVe24Ous2ESsAfD4kIeN=="]}
    var jsonSettings = new JsonSerializerSettings
    {
        TypeNameHandling = TypeNameHandling.Objects,
        TypeNameAssemblyFormat = FormatterAssemblyStyle.Simple
    };
    var result = JsonConvert.DeserializeObject<T>(jsonObject, jsonSettings);