Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从C中的原始JSON POST请求中获取密钥名称#_C#_Json_Asp.net Mvc - Fatal编程技术网

C# 从C中的原始JSON POST请求中获取密钥名称#

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.

我试图读取原始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)?

NewtonSoft JSON库允许您使用泛型将JSON反序列化为特定类型,请查看文档。如果JSON字符串与您试图反序列化到的对象不匹配,它还会抛出一个错误


我偶尔做的另一个选择是将JSON字符串反序列化为
动态
,而不是
对象
。它使您不必为期望的每个响应创建类型。查看一个示例。

创建一个具有这三个属性的类,然后反序列化该类的实例。相关:Hi@Amy澄清一下(抱歉,如果我以前没有),场景是我只是尝试读取输入的键值,因为它们可能正确,也可能不正确(匹配该类)。例如,如果有人要传入“FirstNaem”而不是“FirstName”,则在映射到类时该值将被忽略。@kyle_13这是一个重要的细节。我建议将其编辑到您的问题中。@kyle_13一般来说,当某些JSON与预期的模型不匹配时,会导致400个错误请求。