我在访问使用StringContent创建的HttpResponseMessage内部的JSON对象时遇到问题。
这是JSON对象的样子:
{
"object": "JOB",
"entry": [
{
"uuid": "1nufisnfiu3-dn3u2irb-dn3ui2fb9-nui2",
"changed_fields": [
"status"
],
"time": "2018-09-30 21:57:02"
}
],
"resource_url": "https://somewebsiteAPI.com/api_1.0/Jobs/1nufisnfiu3-dn3u2irb-dn3ui2fb9-nui2.json"
}
这是我的控制器:
[HttpPost]
public async Task<HttpResponseMessage> Post()
{
string result = await Request.Content.ReadAsStringAsync();
var resp = new HttpResponseMessage(HttpStatusCode.OK);
resp.Content = new StringContent(result, System.Text.Encoding.UTF8, "application/json");
return resp;
}
我的目标是获取resource_url json对象。
任何帮助将不胜感激!谢谢!
答案 0 :(得分:0)
您需要让JSON
字符串成为对象,然后获取resource_url
的值。
我会用Json.net来制作。
看起来像这样。
public class Entry
{
public string uuid { get; set; }
public List<string> changed_fields { get; set; }
public string time { get; set; }
}
public class RootObject
{
public List<Entry> entry { get; set; }
public string resource_url { get; set; }
}
JsonConvert.DeserializeObject
方法让JSON
字符串进行建模。 然后获取模型resource_url
的属性,并将其作为参数传递到StringContent
中。
[HttpPost]
public async Task<HttpResponseMessage> Post()
{
string result = await Request.Content.ReadAsStringAsync();
var resp = new HttpResponseMessage(HttpStatusCode.OK);
var model = JsonConvert.DeserializeObject<RootObject>(result);
resp.Content = new StringContent(model.resource_url, System.Text.Encoding.UTF8, "application/json");
return resp;
}
答案 1 :(得分:0)
应该真正让模型绑定器发挥其预期的作用,而不是尝试自己解析JSON。
disp x
1 60-80 33.9
2 80-100 30.4
3 100-120 32.4
4 120-140 27.3
5 140-160 30.4
根据提供的JSON定义作业的位置
[HttpPost]
public async Task<IHttpActionResult> Post([FromBody]Job model) {
if(ModelState.IsValid) {
//...do something with model
return Ok(model.ResourceUrl);
}
return BadRequest(ModelState);
}
模型绑定器将解析传入的JSON,并填充定义为匹配所需数据的强类型对象模型。