JsonNode.HasProperty возвращает false, если значение равно нулю

Поэтому я пишу оболочку для JsonNode, чтобы упростить извлечение свойств json, когда нет контракта данных и мне нужно поддерживать множество различных значений. Но у меня возникают некоторые проблемы, когда дело доходит до чтения пустого значения. Так что либо я делаю что-то не так, либо JsonNode — не тот класс, с которым здесь можно работать.

Мой test-json следующий:

{
  "id": 3,
  "name": null
}

И я делаю разные запросы к JsonNode.

_node.HasProperty("id") вернет true, но _node.HasProperty("name") вернет ложь.

Так есть ли способ добиться этого?

Пожалуйста, посоветуйте.

Я думаю, вам придется разобрать его на JsonObject и использовать ContainsKey("name")

hakim00 06.08.2024 18:38

Пожалуйста. предоставьте больше кода вместе с данными для ясности.

rotabor 06.08.2024 20:18

@hakim00 - Ты был прав насчет денег, друг мой. Самый простой способ — использовать _node.AsObject() для получения экземпляра JsonObject, а затем использовать ContainsKey(), как вы сказали. Пожалуйста, добавьте ответ здесь, и я отмечу его как правильный ответ.

Thomas 08.08.2024 13:58

Что такое метод HasProperty? Откуда это взялось? Я не могу найти его ни с помощью методов ни JsonNode, ни JsonObject. Вам необходимо проверить свой код на наличие определения HasProperty.

rotabor 08.08.2024 14:57

@Thomas Я добавил ответ, но мне также интересна реализация HasProperty, так как это было предложено здесь github.com/dotnet/runtime/issues/47649#issuecomment-81212322‌​5, но так и не реализовано.

hakim00 08.08.2024 18:29

О да... Теперь я понял, что кто-то добавил метод расширения к объекту под названием HasProperty... Так что неудивительно, что это никогда не работало :)

Thomas 09.08.2024 10:01
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
6
54
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

По моему мнению, полученный результат означает, что на данный момент обработано только JsonNode. Вам нужно вернуться в корень текущего "id": 3 и получить узел «имя».

Ответ принят как подходящий

Вам нужно будет привести JsonNode к производному типу JsonObject и использовать метод ContainsKey.

JsonObject jsObj = _node.AsObject();
bool hasProperty = jsObj.ContainsKey("name");

Спасибо за указание. Вы правы, я имел в виду кастинг.

hakim00 08.08.2024 20:49

Другие вопросы по теме

Использование дженериков в C# для определения подсвойства для десериализации JSON завершается неудачей из-за странности конструктора
System.Text.Json Десериализовать вложенный полиморфный объект без дискриминатора типа
Как использовать/обрабатывать математическую формулу, сохраненную в формате JSON, в JavaScript
Динамически выводить схему данных JSON с помощью Pyspark
JSON.stringify исключает свойства объекта
Как преобразовать JSON в общую структуру в Go с помощью интерфейса {} без получения интерфейса карты [строка] {}?
Вставка данных JSON с помощью «insertAdjacentElement» вместо «innerHTML»
Как автоматизировать синхронизацию между репозиториями Azure DevOps и GitHub с помощью конвейеров Azure?
VBA JsonConverter.ParseJson Анализ Джейсона выдает мне ошибку Несоответствие типа
Netwonsoft JsonConvert.Deserialization выдает исключение JsonSerializationException: «Ошибка преобразования значения «Имя моего пользовательского объекта» в тип «System.Type»