我有一个已通过API序列化的JSON文件,在该文件中,我需要对其进行反序列化以使用其在代码中生成的数据。问题是我遇到了“异常未处理”错误,在该错误中,我试图了解该错误的解决方案,但在此问题上,我有几天没有见识。
我已尽力将我的问题与其他线程联系起来,但是迷路了几天。通过设置带有属性的{get {return}},我确实获得了某种形式的sprint完成,但是由于序列化时代码的设置,我无法做到这一点。相反,我尝试将输出的文件放在一个简单的位置,并尝试根据文件位置对其进行脱盐处理。
ImageModeration image1 = JsonConvert.DeserializeObject<ImageModeration>(File.ReadAllText(@"C:\ModerationOutput.json"));
// deserialize JSON directly from a file
using (StreamReader file = File.OpenText(@"C:\ModerationOutput.json"))
{
JsonSerializer serializer = new JsonSerializer();
ImageModeration image2 = (ImageModeration)serializer.Deserialize(file, typeof(ImageModeration));
}
这是我的json文件
[ { “ ImageUrl”:“ URL”, “ ImageModeration”:{ “ CacheID”:“ 396a972f-79ae-4b31-a54c-0ba3314318fa_637026883058218816”, “结果”:false, “ TrackingId”:“ UKS_ibiza_464a60be-f57d-4ee1-aa37-13d04f151fdd_ContentModerator.F0_4ae15371-36c9-4cb2-8e21-83381a29432c”, “ AdultClassificationScore”:0.0048455675132572651, “ IsImageAdultClassified”:否, “ RacyClassificationScore”:0.011258091777563095, “ IsImageRacyClassified”:否, “ AdvancedInfo”:[ { “密钥”:“ ImageDownloadTimeInMs”, “值”:“ 37” }, { “键”:“ ImageSizeInBytes”, “值”:“ 34854” } ], “状态”: { “代码”:3000, “描述”:“确定”, “异常”:null } }, “ TextDetection”:null, “ FaceDetection”:null } ]
此错误来自代码的第一行。
Newtonsoft.Json.JsonSerializationException:'无法反序列化 当前JSON数组(例如[1,2,3])转换为type 'convertingJSON.Program + ImageModeration',因为该类型需要一个 JSON对象(例如{“ name”:“ value”})以正确反序列化。修理 此错误将JSON更改为JSON对象(例如 {“ name”:“ value”})或将反序列化类型更改为数组或 实现集合接口的类型(例如ICollection,IList) 例如可以从JSON数组反序列化的List。 还可以将JsonArrayAttribute添加到类型中以强制将其 从JSON数组反序列化。路径”,第1行,位置1。'
答案 0 :(得分:1)
使用this网站将您的JSON转换为C#对象,然后反序列化为它。 根据该错误,您似乎可能缺少一个属性,即该对象与JSON不对应
答案 1 :(得分:0)
特定于您发布的JSON
字符串,可以参考以下代码片段将字符串反序列化为相应的组件。我使用的是Newtonsoft JSON库,该库是.NET的高性能JSON框架。一个有效的示例可以在以下网址找到:https://dotnetfiddle.net/RmXNHM
using System;
using Newtonsoft.Json;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
string json=@"[{'ImageUrl':'URL','ImageModeration':{'CacheID':'396a972f-79ae-4b31-a54c-0ba3314318fa_637026883058218816','Result':false,'TrackingId':'UKS_ibiza_464a60be-f57d-4ee1-aa37-13d04f151fdd_ContentModerator.F0_4ae15371-36c9-4cb2-8e21-83381a29432c','AdultClassificationScore':0.004845567513257265,'IsImageAdultClassified':false,'RacyClassificationScore':0.011258091777563095,'IsImageRacyClassified':false,'AdvancedInfo':[{'Key':'ImageDownloadTimeInMs','Value':'37'},{'Key':'ImageSizeInBytes','Value':'34854'}],'Status':{'Code':3000,'Description':'OK','Exception':null}},'TextDetection':null,'FaceDetection':null}]";
var Sresponse = JsonConvert.DeserializeObject<List<RootObject>>(json);
foreach(var value1 in Sresponse)
{
Console.WriteLine(value1.ImageUrl);
Console.WriteLine(value1.ImageModeration.CacheID);
}
}
}
public class AdvancedInfo
{
public string Key { get; set; }
public string Value { get; set; }
}
public class Status
{
public int Code { get; set; }
public string Description { get; set; }
public object Exception { get; set; }
}
public class ImageModeration
{
public string CacheID { get; set; }
public bool Result { get; set; }
public string TrackingId { get; set; }
public double AdultClassificationScore { get; set; }
public bool IsImageAdultClassified { get; set; }
public double RacyClassificationScore { get; set; }
public bool IsImageRacyClassified { get; set; }
public List<AdvancedInfo> AdvancedInfo { get; set; }
public Status Status { get; set; }
}
public class RootObject
{
public string ImageUrl { get; set; }
public ImageModeration ImageModeration { get; set; }
public object TextDetection { get; set; }
public object FaceDetection { get; set; }
}
输出:
URL
396a972f-79ae-4b31-a54c-0ba3314318fa_637026883058218816