gpt4 book ai didi

c# - 使用 json.net 反序列化而不创建包装类

转载 作者:太空狗 更新时间:2023-10-29 23:13:46 26 4
gpt4 key购买 nike

我最近开始使用 Json.net 并将现有的反序列化器从 JavaScript 更改为 Json.Net

在这样做的同时,我陷入了一个实现问题。

我有以下 Json:

string json = @"'Album':{
'Name': 'Classical',
'Date': '2005-4-7T00:00:00'
}";

当我使用 Json.net 对其进行反序列化时,我得到了一个空响应:

var a = JsonConvert.DeserializeObject<Album>(json);

我寻求帮助,发现要反序列化它,我需要创建一个包装类,Album 必须是其属性。

但是,我有很多这样的类来反序列化它。有什么通用的方法吗?我是否需要像这样为我的所有类创建包装器:

public class JsonOutputWrapper
{
public Album Album{ get; set; }
}

我可以在不创建包装类的情况下使用一些通用实现来完成这项工作吗:

var a = JsonConvert.DeserializeObject<Album>(json);

最佳答案

正如其他人所提到的,您的 JSON 无效。

假设有效的 JSON 是:{ "Album": { "Name": "Classical", "Date": "2005-4-7T00:00:00"} }

然后你可以这样做:

var json = "{ \"Album\": { \"Name\": \"Classical\", \"Date\": \"2005-4-7T00:00:00\" } }";
var jtoken = JsonConvert.DeserializeObject<JToken>(json);
var album = jtoken.SelectToken("Album").ToObject<Album>();

或者你也可以使用dynamic:

var json = "{ \"Album\": { \"Name\": \"Classical\", \"Date\": \"2005-4-7T00:00:00\" } }";
var album = JsonConvert.DeserializeObject<dynamic>(json).Album.ToObject<Album>();

关于c# - 使用 json.net 反序列化而不创建包装类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32672176/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com