none
Ошибка в обработке JSON С# - Вызвано исключение: "System.Runtime.InteropServices.COMException"

    Вопрос

  •  Друзья,

      VisualStudio выдает ошибку при отладке:

    Вызвано исключение: "System.Runtime.InteropServices.COMException" в TestSoft.exe
    Сведения WinRT: Значение не является объектом. Используйте свойство ValueType для получения типа.

         Я совсем недавно с С# и не пойму, почему значение не является объектом?

                HttpClient client = new HttpClient();
                
                HttpResponseMessage response = await client.GetAsync(URL);
    
               var result = await response.Content.ReadAsStringAsync();
    
                JsonValue root;
                JsonObject jsonObject;
                string jsontext;
                if (JsonValue.TryParse(result, out root))
                {
                    jsonObject = root.GetObject();
                    if (jsonObject.ContainsKey("content"))
                    {
                        jsontext = jsonObject.GetNamedString("content");
                    }
                }
    

    Пробовал еще такой вариант но результат тот же.

     HttpClient client = new HttpClient();
                
    HttpResponseMessage response = await client.GetAsync(URL);
    
                
    var result = await response.Content.ReadAsStringAsync();
    
               
    JsonValue json = JsonValue.Parse(result);
                
             
    string jsontext = json.GetObject().GetNamedString("content");

    В чем проблема? По ссылке считывание происходит.

    11 июля 2018 г. 21:33

Все ответы

  • В какой строке возникает исключение?

    This posting is provided "AS IS" with no warranties, and confers no rights.

    12 июля 2018 г. 2:47
  • В какой строке возникает исключение?

    This posting is provided "AS IS" with no warranties, and confers no rights.

    string jsontext = json.GetObject().GetNamedString("content");

     Я предполагаю, что функция возвращает не string a JsonObject. 

    12 июля 2018 г. 20:08
  • Разделите код на две строки, пусть первая вызывает GetObject(), вторая GetNamedString().

    В какой из них возникает исключение?

    Так же покажите содержимое result.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    13 июля 2018 г. 1:28
  • Добрый день 

    Разделил, исключение возникает при вызове GetObject()

    result = "[{\"title\":\"Thought for the Day\",\"content\":\"<p>God's word is true philosophy, true science. Human opinions and sensational preaching amount to very little. - LHU 217</p>\",\"channel\":2}]"

    15 июля 2018 г. 14:47
  • Это потому что в JSON не объект, а массив, там ведь квадратные скобки. Вызывайте метод для получения массива, а не объекта. Так же в тексте исключения написано как проверить тип.

    В общем, я дам вам возможность самостоятельно решить проблему. Все те шаги на которые у нас ушло 4 дня вы теперь можете проделывать самостоятельно за 1 минуту или меньше. 


    This posting is provided "AS IS" with no warranties, and confers no rights.

    15 июля 2018 г. 16:56