问题背景:
我正在使用牛顿软件 JSON.NET 将 XML 响应从 AWS 服务解封为 C# 对象结构。
问题:
当我尝试反序列化 ImageSet
类类别
属性时,我收到以下错误消息:
Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[ShoppingComparisonEngine.AWS.AWSRootListPriceObject.ImageSet]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.
To fix this error either change the JSON to a JSON array (e.g. [1,2,3]) or change the deserialized type so that it is a normal .NET type (e.g. not a primitive type like integer, not a collection type like an array or List<T>) that can be deserialized from a JSON object. JsonObjectAttribute can also be added to the type to force it to deserialize from a JSON object.
Path 'Items.Item[1].ImageSets.ImageSet.Category', line 1, position 12122.
我应该补充一点,我无法控制返回的XML,反过来也无法控制我需要将响应反序列化为的大型对象结构。
代码:
var awsPriceLostModel = JsonConvert.DeserializeObject<AwsListPriceRootObject>(fullyEscapedData);
以下是“ImageSet”的C#类模型
public class ImageSets
{
[JsonProperty("imageset")]
public List<ImageSet> ImageSet { get; set; }
}
public class ImageSet
{
[JsonProperty("category")]
public string Category { get; set; }
[JsonProperty("swatchimage")]
public SwatchImage SwatchImage { get; set; }
[JsonProperty("smallimage")]
public SmallImage2 SmallImage { get; set; }
[JsonProperty("thumbnailimage")]
public ThumbnailImage ThumbnailImage { get; set; }
[JsonProperty("tinyimage")]
public TinyImage TinyImage { get; set; }
[JsonProperty("mediumimage")]
public MediumImage2 MediumImage { get; set; }
[JsonProperty("largeimage")]
public LargeImage2 LargeImage { get; set; }
}
这是一个显示JSON响应的屏幕截图,突出显示了抛出错误的< code>Category属性:
任何试图弄清楚为什么在将列表从JSON解压缩到C#时出现错误的帮助都将不胜感激。
我不确定您的原始JSON是什么样的,但我会尝试以下两种方法之一:
>
在ImageSet属性上使用[JsonArray]
属性(docs)。
[JsonArray]
public List<ImageSet> ImageSet { get; set; }
考虑为您的ImageSet属性使用不同的名称,或者它要序列化的名称。您已经在ImageSet
名称上加倍,使用它表示类的名称以及包含该类列表的属性。
祝你好运。
这是一个重复问题,因为下面的问题要么乱七八糟,要么根本没有回答: Jackson永远无法处理泛型类型T,它认为它是JavaType的映射,但它会发现对象类型构造函数参数,因为类型擦除并抛出错误。这是杰克逊的错误,还是我做错了什么?TypeReference或JavaType的显式规范还用于什么?
我想通过Google Gson传输一个列表对象,但我不知道如何反序列化泛型类型。 我在看了这个之后尝试了什么(Balusc的回答): 编辑: 现在我有 但是,我确实在“FromJson”行得到以下异常: null
问题内容: 我正在尝试将json数据反序列化为模型类,但是失败了。这是我的工作: 这是我的模型的样子: 您可以看到我到达这里的Json:http : //api.worldbank.org/incomeLevels/LIC/countries? format=json 这是我得到的错误: 无法将JSON数组反序列化为“ Mvc4AsyncSample.Models.CountryModel”类型。
是否有一种简单的方法来反序列化可以是或
问题内容: 我在使用AJAX访问的Java服务器应用程序中有一个字符串。它看起来像以下内容: 当从服务器提取字符串时,是否有一种简单的方法可以将其转换为活动的JavaScript对象(或数组)?还是我必须手动拆分字符串并手动构建对象? 问题答案: 现代浏览器支持。 在不浏览器,您可以包括在库中。
我有以下控制器: 使用以下请求对象: 当帖子通过并查看我得到的对象时,有效负载列表中有LinkedHashMap对象,而不是我的DTO类型的对象。 如何让Spring jackson将JSON转换为我的DTO对象。请记住,我计划对其他对象列表重用包装器响应DTO,这就是我使用通用列表(List)的原因。 这是我正在尝试的JSON。