如何将JObject反序列化到.NET对象

28 浏览
0 Comments

如何将JObject反序列化到.NET对象

我很高兴使用 Newtonsoft JSON 库

例如,我可以从一个.NET对象创建一个 JObject,在这种情况下是一个Exception的实例(可能是一个子类)

if (result is Exception)
    var jobjectInstance = JObject.FromObject(result);

现在我知道该库可以将JSON文本(即字符串)反序列化为对象

// only works for text (string)
Exception exception = JsonConvert.DeserializeObject(jsontext); 

但我正在寻找的是:

// now i do already have an JObject instance
Exception exception = jobjectInstance.????

很明显我可以从一个 JObject 回到 JSON 文本,然后使用反序列化功能,但这对我来说似乎是倒退的。

admin 更改状态以发布 2023年5月23日
0
0 Comments

从文档中,我找到了这个:

JObject o = new JObject(
   new JProperty("Name", "John Smith"),
   new JProperty("BirthDate", new DateTime(1983, 3, 20))
);
JsonSerializer serializer = new JsonSerializer();
Person p = (Person)serializer.Deserialize(new JTokenReader(o), typeof(Person));
Console.WriteLine(p.Name);

Person的类定义应该兼容以下内容:

class Person {
    public string Name { get; internal set; }
    public DateTime BirthDate { get; internal set; }
}

如果您使用最新版本的JSON.net,而且不需要自定义序列化,请参阅Tien Do的答案,那更为简洁。

0
0 Comments

根据这篇文章,现在处理JSON要好得多:

// pick out one album
JObject jalbum = albums[0] as JObject;
// Copy to a static Album instance
Album album = jalbum.ToObject();

文档:将JSON转换为类型

0