How to add “undefined” to a JObject collection - w

2019-09-21 12:05发布

问题:

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?

回答1:

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.



回答2:

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

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


回答3:

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