[英]Convert JSON response to Custom C# object
I am making a call to a webservice and getting following Json Respons我正在调用网络服务并关注 Json 响应
{"handler":{"name":"abc"},"intent":{"name":"actions.intent.MAIN","params":{},"query":"Mit Google sprechen"},"scene":{"name":"actions.scene.START_CONVERSATION","slotFillingStatus":"UNSPECIFIED","slots":{},"next":{"name":"Start_Frage"}},"session":{"id":"ABwppHHVumDrliLJaLSikS6KnIlN7yYv6Z4XJCOYzEZt8Fr08RH6r0wtM2-E0v40lS2p1YosTDfpSCd5Lw","params":{},"typeOverrides":[],"languageCode":""},"user":{"locale":"de-DE","params":{},"accountLinkingStatus":"ACCOUNT_LINKING_STATUS_UNSPECIFIED","verificationStatus":"VERIFIED","packageEntitlements":[],"gaiamint":"","permissions":[],"lastSeenTime":"2021-04-01T10:06:59Z"},"home":{"params":{}},"device":{"capabilities":["SPEECH","RICH_RESPONSE","LONG_FORM_AUDIO"]}}
I used https://json2csharp.com/ to convert my Json String to C# Classes我使用https://json2csharp.com/将我的 Json 字符串转换为 C# 类
public class Handler
{
public string name { get; set; }
}
public class Params
{
}
public class Intent
{
public string name { get; set; }
public Params @params { get; set; }
public string query { get; set; }
}
public class Slots
{
}
public class Next
{
public string name { get; set; }
}
public class Scene
{
public string name { get; set; }
public string slotFillingStatus { get; set; }
public Slots slots { get; set; }
public Next next { get; set; }
}
public class Session
{
public string id { get; set; }
public Params @params { get; set; }
public List<object> typeOverrides { get; set; }
public string languageCode { get; set; }
}
public class User
{
public string locale { get; set; }
public Params @params { get; set; }
public string accountLinkingStatus { get; set; }
public string verificationStatus { get; set; }
public List<object> packageEntitlements { get; set; }
public string gaiamint { get; set; }
public List<object> permissions { get; set; }
public DateTime lastSeenTime { get; set; }
}
public class Home
{
public Params @params { get; set; }
}
public class Device
{
public List<string> capabilities { get; set; }
}
public class Root
{
public Handler handler { get; set; }
public Intent intent { get; set; }
public Scene scene { get; set; }
public Session session { get; set; }
public User user { get; set; }
public Home home { get; set; }
public Device device { get; set; }
}
But how exactly do I parse my Json respone into an C# Object?但是我究竟如何将我的 Json 响应解析为 C# Object? Then make any changes to It and finally send a response back?然后对其进行任何更改并最终发送回响应? Im a newbie in programming thats why a Step by Step example would be very helpful我是编程新手,这就是为什么一步一步的例子会很有帮助
My current class looks like this.我目前的 class 看起来像这样。 Variable body holds the Json response.变量 body 保存 Json 响应。
public class GoogleController : ControllerBase
{
[HttpGet]
public IActionResult Get()
{
var result = new Result();
result.Value1 = 123;
return Ok(result);
}
[HttpPost]
public async Task<IActionResult> PostWebHook()
{
string body;
using (var reader = new StreamReader(Request.Body))
{
body = await reader.ReadToEndAsync();
}
return Ok("Test123");
}
}
Use FromBody
attribute to deserialize body使用FromBody
属性反序列化 body
[HttpPost]
public async Task<IActionResult> PostWebHook([FromBody] Root root)
{
// root is deserialized body
// modify root
...
return Ok(root);
}
https://json2csharp.com/ adds a command in the first line something like: https://json2csharp.com/在第一行添加一个命令,如下所示:
Root myDeserializedClass = JsonConvert.DeserializeObject<Root>(myJsonResponse);
This line is used to deserialize the text.此行用于反序列化文本。
Yours should be like:你的应该是这样的:
var myDeserializedClass = JsonConvert.DeserializeObject<Root>(body);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.