【发布时间】:2019-05-05 18:15:41
【问题描述】:
我从另一个方法中的方法调用返回一个 Json 对象,想问一下如何访问在返回的 Json 对象中创建的属性?
我知道我可以返回一个具有所需属性的非 Json 对象,但是我将如何访问传递给返回的 Json 的匿名类型
[HttpPost]
public IHttpActionResult PhoneReminder([FromUri] RegisterInterest PhoneReminderValues, int RYI_WebID)
{
var JsonReturned = object1();
// access the Json object like this -> JsonReturned.message
....
//rest of code
}
public IHttpActionResult object1()
{
return new Json(new {message ="hello world"});
}
【问题讨论】:
-
这看起来像是 Json.NET 的工作。
-
@DanielShillcock 如果对象使用 JSON.net 序列化然后 deserializeObject 工作,我可以访问消息属性,如上面的示例,但是如何访问 IHttpActionResult Json 对象?
-
为什么不将逻辑从
object1()移出到返回对象的私有方法中,让object1()调用该私有方法并返回结果?然后在PhoneReminder中,您也可以调用相同的私有方法,这样您就没有无意义的 JSON 序列化和反序列化 -
@succeed 这是一个隐藏更深层次问题的XY problem。如果两个操作都属于同一个 ApiController,则可以将共享功能提取到它自己的功能/服务中并由两个操作使用。确实不需要在控制器中进行所有繁重的序列化和反序列化。查看当前的设计选择。
-
@p3tch 是的,这是一个解决方案,但是出于一致性目的和普遍兴趣,是否有办法访问返回的这个 Json 对象
标签: c# json json.net asp.net-web-api2