c# - C# 解析方法调用返回的 IHttpActionResult Json 对象
问题描述
我从另一个方法中的方法调用返回一个 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"});
}
解决方案
从 NuGet 获取 Newtonsoft.Json。
然后你可以这样做:
public async Task<T> GetObjectFromContent<T>(HttpContent content) where T: class
{
string response = await content.ReadAsStringAsync();
if (string.IsNullOrWhiteSpace(response))
return null;
try
{
T obj = JsonConvert.DeserializeObject<T>(response);
return obj;
}
catch(JsonSerializationException)
{
return null;
}
}
首先,我从 HttpContent 得到一个字符串响应。它实际上只是一个字符串中的 json。然后使用 JsonConvert.DeserializeObject。当然你必须先声明类。例如,如果您有这样的 Json:
{
"FirstName" : "John",
"SecondName" : "Black"
}
那么你必须创建类:
class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
并使用 Person 作为 T 调用此方法 (GetObjectFromContent)。您的类应该有一个无参数的构造函数。您还可以为您的属性指定不同的名称,但您必须使用属性 JsonProperty 来装饰它们
推荐阅读
- php - Laravel Eloquent:违反完整性约束:1052 列“id”在 where 子句不明确
- php - 将当前网址与新网址附加
- protocol-buffers - 在哪里存储项目之间共享的 proto 文件?
- matlab - 在交互方法中使用时如何在 matlab 函数中声明 x0
- c# - Visual Studio:抑制命名空间中所有文件的警告
- powershell - 消息框响应给出未处理的异常
- angular - 不要使用角管显示小数点后的数字
- arrays - 将文件读入 char 数组,避免使用 Arduino 的字符串
- java - 如何在 JAVA 中设置 Web 服务调用超时?
- javascript - 如何通过事件更改弹出窗口的延迟?