gpt4 book ai didi

c# - 使用 JSon.net 将平面 JSON 数据反序列化为结构

转载 作者:行者123 更新时间:2023-11-30 12:13:25 25 4
gpt4 key购买 nike

我正在使用一个返回 JSON 数据的 Web 服务,在许多情况下,该服务返回一个对象中的多个属性,我想在 C# 端将这些属性分组到一个类中。考虑一个像这样的类结构:

  class Person
{
public Address Address { get; set; }
public string Name { get; set; }
}

class Address
{
public string StreetAddress { get; set; }
public string City { get; set; }
public string ZipCode { get; set; }
}

JSON 数据如:

{ "Name" : "Pilchie",
"StreetAddress" : "1234 Random St",
"City" : "Nowheretown",
"Zip" : "12345"
}

是否可以为我的 PersonAddress 类添加属性,以便它们序列化/反序列化为这种格式?

最佳答案

我认为您无法让 JSON.NET 一次性完成所有工作——您必须手动创建 Person 对象。但是,您可以在不创建单独的 DTO 类的情况下执行此操作。例如:

var jsonText = "{ \"Name\" : \"Pilchie\"," +
"\"StreetAddress\" : \"1234 Random St\"," +
"\"City\" : \"Nowheretown\"," +
"\"Zip\" : \"12345\"" +
"}";
JObject jsonObject = (JObject) JsonConvert.DeserializeObject(jsonText);

var person =
new Person
{
Address = new Address
{
City = (String) jsonObject["City"],
StreetAddress = (String) jsonObject["StreetAddress"],
ZipCode = (string) jsonObject["Zip"]
},
Name = (string) jsonObject["Name"]
};

和序列化:

JsonConvert.SerializeObject(
new
{
person.Name,
person.Address.StreetAddress,
person.Address.City,
Zip = person.Address.ZipCode
});

关于c# - 使用 JSon.net 将平面 JSON 数据反序列化为结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11583107/

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