C#解析由方法调用返回的IHttpActionResult Json对象

时间:2018-12-04 10:33:10

标签: c# json json.net asp.net-web-api2

我正在从另一个方法中的方法调用返回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"});
     }

2 个答案:

答案 0 :(得分:1)

从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装饰它们

答案 1 :(得分:0)

Use Nuget Newtonsoft.Json

如果您的JSON对象类似于:

HttpResponseMessage response;
var jsonObject = await response.Content.ReadAsStringAsync();

现在假设您要访问的JSON中有一个属性“ FirstName”

您可以按照以下方式进行操作:

using Newtonsoft.Json.Linq;

var parsedJsonObject = JObject.Parse(jsonObject);
var firstName =  parsedJsonObject["FirstName"];