【发布时间】:2015-09-18 14:50:44
【问题描述】:
我正在尝试解析从以 odata 格式返回数据的 API 返回的响应。
数据包含我需要的所有数据在一个数组(值)中,但我不知道如何获取该数据并删除包含它的根/父元素。
我将此数据返回到 javascript MVC 前端,因此我需要它是 JSON 格式,但没有它的父级。
我刚刚返回整个 odata 对象的代码。
我不需要说“”odata.metadata”的父部分:“http://systech.edu/SOM_a/Api/v1/$metadata#Keys”:
这是 API 返回的 odata:
{
"odata.metadata":"http://systech.edu/SOM_a/Api/v1/$metadata#Keys","value":[
{
"odata.id":"http://systech.edu/SOM_a/Api/v1/Keys('111')","Id":"111","Name":"VideoSearch","Timeout":20160,"IsDefault":false,"Auth":false,"err":false,"exclude":true,"Internal":true,"view":true
},{
"odata.id":"http://systech.edu/SOM_a/Api/v1/Keys('222')","Id":"222","Name":"DesktopRecorder","Timeout":20160,"IsDefault":false,"Auth":false,"err":false,"exclude":true,"Internal":true,"view":false
},{
"odata.id":"http://systech.edu/SOM_a/Api/v1/Keys('333')","Id":"333","Name":"Manage","Timeout":20160,"IsDefault":false,"Auth":false,"err":false,"exclude":true,"Internal":true,"view":false
}
]
}
这里是处理 api 和 odata 的代码:
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
WebRequest request = WebRequest.Create("http://systech.edu/som_a/api/V1/Keys");
request.ContentType = "application/json; charset=utf-8";
SetBasicAuthHeader(request, "xxxx", "xxxx");
WebResponse response = request.GetResponse();
var rawJson = new StreamReader(response.GetResponseStream()).ReadToEnd();
json = JObject.Parse(rawJson);
所需的 JSON 输出:
{
"odata.id":"http://systech.edu/SOM_a/Api/v1/Keys('111')","Id":"111","Name":"VideoSearch","Timeout":20160,"IsDefault":false,"Auth":false,"err":false,"exclude":true,"Internal":true,"view":true
},{
"odata.id":"http://systech.edu/SOM_a/Api/v1/Keys('222')","Id":"222","Name":"DesktopRecorder","Timeout":20160,"IsDefault":false,"Auth":false,"err":false,"exclude":true,"Internal":true,"view":false
},{
"odata.id":"http://systech.edu/SOM_a/Api/v1/Keys('333')","Id":"333","Name":"Manage","Timeout":20160,"IsDefault":false,"Auth":false,"err":false,"exclude":true,"Internal":true,"view":false
}
【问题讨论】:
-
试试这个 var ODataJSON = JsonConvert.DeserializeObject
(json); ODataJSON.Property("odata.metadata").Remove();
标签: c# asp.net c#-4.0 asp.net-web-api odata