C# 为什么Controller.Json和newtonsoftjson返回不同的结果?
我有一个包含匿名对象集合的匿名对象,但将其更改为json在C# 为什么Controller.Json和newtonsoftjson返回不同的结果?,c#,asp.net-core,json.net,asp.net-core-mvc,C#,Asp.net Core,Json.net,Asp.net Core Mvc,我有一个包含匿名对象集合的匿名对象,但将其更改为json在controller的json和Newtonsoft json之间有所不同-如何从json(数据)中删除这些附加字段 使用Newtonsoft json时的结果: 返回状态码(200,JsonConvert.SerializeObject(数据)) 返回状态码(200,Json(数据)) 因为Controller.Json生成JsonResult对象,该对象包含其他参数。可以找到这些方面的概述。而Newtonsoft将指定的对象序列化为J
controller的json
和Newtonsoft json
之间有所不同-如何从json(数据)
中删除这些附加字段
使用Newtonsoft json时的结果:
返回状态码(200,JsonConvert.SerializeObject(数据))代码>
返回状态码(200,Json(数据))代码>
因为Controller.Json
生成JsonResult
对象,该对象包含其他参数。可以找到这些方面的概述。而Newtonsoft将指定的对象序列化为JSON字符串
在数据方面(序列化),它们确实会产生相同的结果
如果要附加到这些属性,通常在对象上使用getter和setter:
return new JsonResult(result)
{
StatusCode = 200
};
并且这个对象应该从控制器返回,而不是returnstatuscode(200,Json(data))代码>
还值得指出的是,Json
是JsonResult的扩展方法(helper方法)。它们都返回相同的东西,一个JsonResult
的实例(它反过来继承ActionResult
)
调用Json
或JsonResult
是一个优先事项,您将不得不为Json
编写更少的代码,并且不必在控制器中声明JsonResult
的实例,因为这将在幕后为您完成。因为controller.Json
生成JsonResult
对象,其中包含其他参数。可以找到这些方面的概述。而Newtonsoft将指定的对象序列化为JSON字符串
在数据方面(序列化),它们确实会产生相同的结果
如果要附加到这些属性,通常在对象上使用getter和setter:
return new JsonResult(result)
{
StatusCode = 200
};
并且这个对象应该从控制器返回,而不是returnstatuscode(200,Json(data))代码>
还值得指出的是,Json
是JsonResult的扩展方法(helper方法)。它们都返回相同的东西,一个JsonResult
的实例(它反过来继承ActionResult
)
调用Json
或JsonResult
是一个优先选择的问题,您将不得不为Json
编写更少的代码,并且不必在控制器中声明JsonResult
的实例,因为这将在幕后为您完成。是的,我刚想在“喜欢就喜欢”中给出一个答案,但您现在已经涵盖了这一点。答复1!=响应2,因为一个是json数据,另一个是jsonresult对象,正好包含数据。值得一提的是,在这里的示例中设置StatusCode
是多余的。创建一个JsonResult
实例而不是使用Json
便利方法也没有什么好处。是的,我刚想回答一下“喜欢就喜欢”,但你现在已经谈到了。答复1!=响应2,因为一个是json数据,另一个是jsonresult对象,正好包含数据。值得一提的是,在这里的示例中设置StatusCode
是多余的。创建JsonResult
实例而不是使用Json
便利方法也没有什么好处。
{
"contentType": null,
"serializerSettings": null,
"statusCode": null,
"value":
{
"something": true,
"data":
[
{
"id": "d5696edd-4321-4dba-9eba-c4df3644bb78",
"name": "XYZ"
}
]
}
}
return new JsonResult(result)
{
StatusCode = 200
};