When using Json.NET, I am trying to create a JSON structure dynamically using the "JSON to LINQ" support.
In the following, jObject
is a JObject and JObject.Add takes (string, JToken). However, I cannot find out how to add either an Undefined or a Null token - nor can I find out how to create JValues with the appropriate Null/Undefined type.
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 */
}
How do I explicitly add a JToken/JValue for a JSON Undefined? How about for a JSON Null?
Setting a property to undefined is functionally equivalent to not setting the property at all. So, if the property is undefined, you just don't add any properties to your JObject
. (And this is probably the reason why undefined
isn't supported by JSON — it's completely redundant.)
Null is represented by new JValue((object)null)
, if I remember correctly.
P.S. With your code, you won't be able to tell the difference between a string "undefined"
and an undefined
value, as well as between "null"
and null
. You probably need to rethink your design.
jObject.Add(key, /* how to add "Undefined" token? */);
jObject.Add(key,JValue.CreateUndefined());
According to this question, it doesn't support undefined
.
After searching the docs, I found 2 references to "Undefined", but no explanation on how they might be used:
- JsonConvert Fields
- JTokenWriter.WriteUndefined Method