gpt4 book ai didi

c# - 在控制台应用程序中反序列化 Json

转载 作者:太空狗 更新时间:2023-10-29 20:30:05 26 4
gpt4 key购买 nike

我正在创建一个 Web API 端点,它将作为服务来检索我们的应用程序配置、进行日志记录等。我遇到的问题是能够反序列化控制台应用程序中的 Json。

设置

public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
public DateTime DateOfBirth { get; set; }
}

网络 API

[HttpGet]
[Route("Person")]
public IHttpActionResult GetPerson()
{
Person person = new Person
{
FirstName = "Steve",
LastName = "Rogers",
DateOfBirth = new DateTime(1920, 7, 4)
};

return Ok(JsonConvert.SerializeObject(person));
}

控制台应用程序

using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost");

var response = client.GetAsync("api/Person").Result;
var data = response.Content.ReadAsStringAsync().Result;
var person = DeserializeJson<Person>(data);
}

public static T DeserializeJson<T>(string input)
{
var result = JsonConvert.DeserializeObject(input);
var result2 = JsonConvert.DeserializeObject(result.ToString());
return JsonConvert.DeserializeObject<T>(result2.ToString());
}

值(value)观

data = "\"{\\"FirstName\\":\\"Steve\\",\\"LastName\\":\\"Rogers\\",\\"DateOfBirth\\":\\"1920-07-04T00:00:00\\"}\""

result = "{\"FirstName\":\"Steve\",\"LastName\":\"Rogers\",\"DateOfBirth\":\"1920-07-04T00:00:00\"}"

result2 = {{ "FirstName": "Steve", "LastName": "Rogers", "DateOfBirth": "1920-07-04T00:00:00" }}

我遇到的问题是,在第 3 次反序列化之前,我无法反序列化为 Person 对象。 result2 中的值是我能够成功反序列化为 Person 的唯一值。有没有更有效的方法来完成这种反序列化?最好没有 3 次迭代。

最佳答案

我能够成功运行以下命令(基于 this Microsoft article ):

控制台应用:

    static void Main(string[] args)
{
RunAsync().Wait();
}

static async Task RunAsync()
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri("http://localhost:3963/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

HttpResponseMessage response = await client.GetAsync("api/Person");
Person product = await response.Content.ReadAsAsync<Person>();
}
}

Controller :

public class PersonController : ApiController
{
public Person GetPerson()
{
Person person = new Person
{
FirstName = "Steve",
LastName = "Rogers",
DateOfBirth = new DateTime(1920, 7, 4)
};
return person;
}
}

关于c# - 在控制台应用程序中反序列化 Json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37816255/

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