首页 > 解决方案 > 从 C# 中的原始 JSON POST 请求中获取键名

问题描述

我正在尝试读取原始 JSON POST 请求的值,并且仅将传入的字段(键)名称转换为对象。

如果我发布一个 JSON 字符串,例如:

{ 
     "FirstName": "Test",
     "LastName": "User",
     "MiddleInitials": null
}

然后在从请求正文中读取输入流之后,我将 JSON 字符串转换为对象:

// Read the InputStream
StreamReader reader = new StreamReader(Request.Body);
reader.BaseStream.Position = 0;
string jsonText = reader.ReadToEnd();

// Deserialize to object and read property names
object jsonObject = JsonConvert.DeserializeObject(jsonText);

然后,当我检查对象时,我看到以下内容: 在此处输入图像描述 如何获取键值(FirstName、LastName、MiddleInitials)?

标签: c#jsonasp.net-mvc

解决方案


NewtonSoft JSON 库允许您使用泛型将 JSON 反序列化为特定类型,请查看文档。如果 JSON 字符串与您尝试反序列化的对象不匹配,它也会引发错误。

我偶尔会做的另一个选择是将 JSON 字符串反序列化为 adynamic而不是object. 它使您不必为您期望的每个响应创建一个类型。查看此问题/答案以获取示例。


推荐阅读