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