2015-09-18 2 views
0

Я пытаюсь разобрать ответ, который я возвращаю из API, который возвращает данные в формате odata.форматирование ответа odata для возврата json

Данные содержат все данные, которые мне нужны в массиве (значение), но я не могу понять, как получить эти данные и удалить корневой/родительский элемент, который его удерживает.

Я возвращаю эти данные в javascript MVC-интерфейс, поэтому мне нужно, чтобы он был в формате JSON, но без его родителя.

Код, который я только что вернул весь объект odata.

мне не нужна родительская часть, которая говорит "" odata.metadata ":" http://systech.edu/SOM_a/Api/v1/ $ метаданных # Ключи ":

Вот OData возвращаемого API:

{ 
    "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 
    } 
    ] 
} 

Вот код, который обрабатывает апи и 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 
} 
+1

попробовать этот уаг ODataJSON = JsonConvert.DeserializeObject (JSon); . ODataJSON.Property ("odata.metadata") Удалить(); – din

ответ

1

Это должно сработать.

var ODataJSON = JsonConvert.DeserializeObject<JObject>(json); ODataJSON.Property("odata.metadata").Remove(); 
+0

, который работал, но мне интересно, есть ли способ удалить массив, который окружает элементы. Я редактировал исходный вопрос, чтобы включить желаемый результат. Спасибо – SkyeBoniwell

+1

его массив объектов того же типа, почему вы хотите его удалить. Можете ли вы подробнее рассказать о том, что вы пытаетесь сделать на стороне клиента. Причиной для этого массива является то, что вы возвращаете коллекцию объектов. – din

+0

Спасибо. Я надеялся получить коллекцию объектов, которые затем мог бы использовать модель для представления каждого из этих объектов. Поэтому в javascript что-то вроде myCollection.each (function (model) {... do stuff ...} – SkyeBoniwell

Смежные вопросы