Как получить список ключей и значений из json с помощью jcontainer для выполнения проверки?
В моем тестировании API я использую Jcontainer для преобразования ответа в Json.
Экс:
[Test] public void GetUsersList() { var response = us.UserList(); JContainer jsonresponse = rh.ConvertResponseToJson(response); }
Я пытаюсь выполнить следующую проверку против Json
Проверьте, присутствуют ли все ключи (если присутствуют все ключи в json, например id, timestamp, type и т. д..)
Вот мой json
[ { "id": "aa0db615-d4cb-4466-bc23-0e0083002330", "timestamp": "2020-02-11T19:00:00-05:00", "type": 33554432, "info": "Full Synchronization request for all endpoints", "schedule": "once", "lastRun": null, "flags": 6, "creator": null, "isEditable": true, "location": 0, "duration": null }, { "id": "70baa28c-e270-447b-b88a-20d30a9542db", "timestamp": "2020-02-11T19:00:00-05:00", "type": 33554432, "info": "Full Synchronization request for all endpoints", "schedule": "once", "lastRun": null, "flags": 6, "creator": null, "isEditable": true, "location": 0, "duration": null },
Here is my Convert respone to Json for reference <pre> public JContainer ConvertResponseToJson(HttpWebResponse response) { string localString; if (response.ContentEncoding.Contains("application/xml")) { // Convert the escaped Stream into an XML document. ConfigXmlDocument xmlDocument = new ConfigXmlDocument(); xmlDocument.LoadXml(ConvertResponseStreamToString(response)); // Now convert the properly-escaped JSON for the response into a JContainer localString = JsonConvert.SerializeXmlNode(xmlDocument); } else localString = ConvertResponseStreamToString(response); return JToken.Parse(localString) as JContainer; }
Что я уже пробовал:
На данный момент я создал модель Json, чтобы прочитать ее по индексу массива. Но я делаю mutiple assetions для того чтобы vaidate все ключи. Я хочу просто пройтись по ним. Вот что у меня есть до сих пор
var response = us.UserList(); JContainer jsonresponse = rh.ConvertResponseToJson(response); var castedModel = Jsonresponse.ToObject<IList<Model>>(); Assert.IsNotNull(castedModel[0].info); //This is repeated I am trying to avoid this Assert.IsNotNull(castedModel[0].task); Assert.IsNotNull(castedModel[0].timestamp)
Richard MacCutchan
В чем же вопрос?
Member 14779968
Я пытаюсь выполнить следующую проверку по отношению к ответу Json.
1. Проверьте, что все ключи присутствуют в Json.
например: если ответ содержит идентификатор, метку времени, тип, информацию и т. д.. Попытка итерации через Json для достижения этой цели.