C# 从C中的原始JSON POST请求中获取密钥名称#
我试图读取原始JSON POST请求的值,并仅将传入的字段(键)名称转换为对象 如果我发布一个JSON字符串,例如:C# 从C中的原始JSON POST请求中获取密钥名称#,c#,json,asp.net-mvc,C#,Json,Asp.net Mvc,我试图读取原始JSON POST请求的值,并仅将传入的字段(键)名称转换为对象 如果我发布一个JSON字符串,例如: { "FirstName": "Test", "LastName": "User", "MiddleInitials": null } 然后,在从请求主体读取输入流之后,我将JSON字符串转换为一个对象: // Read the InputStream StreamReader reader = new StreamReader(Request.
{
"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)?NewtonSoft JSON库允许您使用泛型将JSON反序列化为特定类型,请查看文档。如果JSON字符串与您试图反序列化到的对象不匹配,它还会抛出一个错误
我偶尔做的另一个选择是将JSON字符串反序列化为
动态
,而不是对象
。它使您不必为期望的每个响应创建类型。查看一个示例。创建一个具有这三个属性的类,然后反序列化该类的实例。相关:Hi@Amy澄清一下(抱歉,如果我以前没有),场景是我只是尝试读取输入的键值,因为它们可能正确,也可能不正确(匹配该类)。例如,如果有人要传入“FirstNaem”而不是“FirstName”,则在映射到类时该值将被忽略。@kyle_13这是一个重要的细节。我建议将其编辑到您的问题中。@kyle_13一般来说,当某些JSON与预期的模型不匹配时,会导致400个错误请求。