c# - 无法将 JSON 反序列化为枚举
问题描述
当我尝试反序列化 JSON 时,总是会出错。CoubType
包含在类CoubBig
中。JSON 示例:http ://coub.com/api/v2/coubs/4951721
代码
[JsonConverter(typeof(StringEnumConverter))]
public enum CoubType
{
[EnumMember(Value = "Coub::Simple")]
Simple = 1,
[EnumMember(Value = "Coub::Temp")]
Temp = 2,
EnumMember(Value = "Coub::Recoub")]
Recoub = 3
}
JsonConvert.DeserializeObject<CoubBig>(await httpResponse.Content.ReadAsStringAsync());
public partial class CoubBig
{
[JsonProperty("id")]
public int Id { get; set; }
[JsonProperty("type")]
public CoubType Type { get; set; }
[JsonProperty("permalink")]
public string Permalink { get; set; }
[JsonProperty("title")]
public string Title { get; set; }
[JsonProperty("visibility_type")]
public VisibilityType VisibilityType { get; set; }
[JsonProperty("original_visibility_type")]
public VisibilityType OriginalVisibilityType { get; set; }
[JsonProperty("channel_id")]
public int ChannelId { get; set; }
[JsonProperty("created_at")]
public DateTimeOffset CreatedAt { get; set; }
[JsonProperty("updated_at")]
public DateTimeOffset UpdatedAt { get; set; }
[JsonProperty("is_done")]
public bool IsDone { get; set; }
[JsonProperty("views_count")]
public int ViewsCount { get; set; }
[JsonProperty("cotd")]
public bool Cotd { get; set; }
[JsonProperty("cotd_at")]
public object CotdAt { get; set; }
[JsonProperty("original_sound")]
public bool OriginalSound { get; set; }
[JsonProperty("has_sound")]
public bool HasSound { get; set; }
[JsonProperty("recoub_to")]
public int RecoubTo { get; set; }
[JsonProperty("file_versions")]
public FileVersions FileVersions { get; set; }
[JsonProperty("audio_versions")]
public AudioVersions AudioVersions { get; set; }
[JsonProperty("image_versions")]
public ThumbnailImageVersions ImageVersions { get; set; }
[JsonProperty("first_frame_versions")]
public FirstFrameVersions FirstFrameVersions { get; set; }
[JsonProperty("dimensions")]
public Dimensions Dimensions { get; set; }
[JsonProperty("age_restricted")]
public bool AgeRestricted { get; set; }
[JsonProperty("allow_reuse")]
public bool AllowReuse { get; set; }
[JsonProperty("banned")]
public bool Banned { get; set; }
[JsonProperty("external_download")]
public ExternalDownload ExternalDownload { get; set; }
[JsonProperty("channel")]
public ChannelSmall Channel { get; set; }
[JsonProperty("percent_done")]
public long PercentDone { get; set; }
[JsonProperty("tags")]
public Tag[] Tags { get; set; }
[JsonProperty("recoubs_count")]
public long RecoubsCount { get; set; }
[JsonProperty("likes_count")]
public long LikesCount { get; set; }
[JsonProperty("raw_video_id")]
public long RawVideoId { get; set; }
[JsonProperty("media_blocks")]
public MediaBlocks MediaBlocks { get; set; }
[JsonProperty("raw_video_thumbnail_url")]
public Uri RawVideoThumbnailUrl { get; set; }
[JsonProperty("raw_video_title")]
public string RawVideoTitle { get; set; }
[JsonProperty("video_block_banned")]
public bool VideoBlockBanned { get; set; }
[JsonProperty("duration")]
public float Duration { get; set; }
}
例外
Newtonsoft.Json.JsonSerializationException:“将值“Coub::Simple”转换为类型“Coub.Net.Objects.CoubType”时出错。路径“类型”,第 1 行,位置 162。
内部异常
ArgumentException:未找到请求的值“Coub::Simple”。
为什么它不起作用?
解决方案
您可以从下面的代码中获得帮助,将类转换为 json
public enum Role
{
Admin,
Guest
}
public class User
{
public string Name { get; set; }
public bool Active { get; set; }
public DateTime CreatedDate { get; set; }
public Role Roles { get; set; }
}
转换 json 通过
public User ConvertJson(string json)
{
var obj = JsonConvert.DeserializeObject<User>(json);
return obj;
}
两种模式json
{ 'Name': 'Your Name', 'Active': true, 'CreatedDate': '2013-01-20T00:00:00Z','Roles': 'Admin'}
{ 'Name': 'Your Name', 'Active': true, 'CreatedDate': '2013-01-20T00:00:00Z','Roles': 1 }
推荐阅读
- python - 我的数据集应该是一个大括号集/字典时显示一个字符串
- python - 未登录时如何让 DeepPavlov REST API 服务在 Linux 上运行
- php - 有没有办法创建一个友好的 url 像 site.com/state/127 并且仍然指向一个特定的文件像 index.php
- amazon-web-services - 在 AWS CodeBuild 容器中安装 Linux Homebrew
- eclipse-hono - 在同一台本地机器上连接 Eclipse Hono 和 Eclipse Ditto
- javascript - 在 Angular 应用程序中用 JaCoCo 替换 Cobertura
- python - 在 odoo12 中安装模块barcodes_generator_abstract 时出错
- python - 如何构建由多个子项目组成的python包?
- node.js - NodeJS:如何等待 runInNewContext 调用的异步脚本?
- authentication - signUpUrl 返回空指针异常