Member 14779968 Ответов: 0

Как сделать получение значения jproperty при итерации и задании ключа generic для следующих двух json


У меня есть следующий метод Validate, где я проверяю, содержит ли Json то же свойство и значения, что и сравниваемая модель.

Но у меня есть 2 Json, которые выглядят так, что я проверяю по одному за раз...

//Json 1
{
  "types": [
    {
      "name": "Active Server Document",
      "value": -2147483648
    },
    {
      "name": "Adobe Acrobat Document",
      "value": -2147483647
    }
}

Json 2
{
  "displayLocalTime": true,
  "statusRefreshInterval": 0
}


//вот мой метод проверки.

<pre> public class PropertiesValidator<TModel>
    {
        public static void Validate(IRestResponse response, IDTO modelObj)
        {
            var content = response.Content;
            bool flag = false;
            //var data = JsonHelper.Deserialize(content);

            JToken x = (JToken)JsonConvert.DeserializeObject(content);
            if(x.Type.Equals(JTokenType.Object))
            {              
                foreach (JProperty jp in x)
                {
                    String[] prop = modelObj.getOrder().Split(',');
                    String actualResult = "";
                    foreach(String p in prop)
                    {
                        //index is hardcoded for first Json...
                        actualResult = jp.Value[0][p].ToString();
                    };

                    if (modelObj.ToString().Equals(actualResult))
                    {
                        flag = true;
                        break;
                    }

                }
                Assert.IsTrue(flag, "None of the record matched for " + modelObj);




            }

            foreach (JObject jo in x)
            {

                String[] prop = modelObj.getOrder().Split(',');
                String actualResult = "";
                foreach (String p in prop)
                {
                    actualResult = jo[p].ToString();
                }

                if (modelObj.ToString().Equals(actualResult))
                {
                    flag = true;
                    break;
                }
            }
           
            Assert.IsTrue(flag, "None of the record matched for " + modelObj);

        }


Что я уже пробовал:

Я также устал от этого для первого Json, и я получил ключевое значение "имя", но я стараюсь избегать жесткого кодирования индекса
jp.значение[0][p].Метод toString()

а для второго Json я могу получить только ключ.. Но я пытаюсь предоставить ключ, который у меня есть в моей внутренней переменной цикла foreach p
jp.Name-да.Метод toString()

0 Ответов