Как добавить "undefined" в коллекцию JObject - где находится JToken/JValue.Undefined?

При использовании Json.NET я пытаюсь динамически создать структуру JSON с помощью поддержки "JSON to LINQ".

В следующих, jObject является JObject и JObject.Add принимает (строка, JToken). Однако я не могу узнать, как добавить токен Undefined или Null, и не могу узнать, как создать JValues ​​с соответствующим типом Null/Undefined.

string value = GetValue();
if (value == "undefined") {
  jObject.Add(key, /* how to add "Undefined" token? */);
} else if (value == "null") {
  jObject.Add(key, /* how to add "Null" token? */);
} else {
  jObject.Add(key, new JToken(value));  /* String value/token */
}

Как явно добавить JToken/JValue для JSON Undefined? Как насчет JSON Null?

3 ответа

Решение

Установка свойства в undefined функционально эквивалентна тому, чтобы вообще не устанавливать свойство. Таким образом, если свойство не определено, вы просто не добавляете какие-либо свойства к вашему JObject, (И это, вероятно, причина, почему undefined не поддерживается JSON - это полностью избыточно.)

Нуль представлен new JValue((object)null), если я правильно помню.

PS С вашим кодом вы не сможете увидеть разницу между строкой "undefined" и undefined значение, а также между "null" а также null, Вам, вероятно, нужно переосмыслить свой дизайн.

jObject.Add(key, /* how to add "Undefined" token? */);

jObject.Add(key,JValue.CreateUndefined());

Согласно этому вопросу, он не поддерживает undefined,

После поиска в документах я обнаружил 2 ссылки на "Не определено", но без объяснения того, как их можно использовать:

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