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

2019-09-21 11:54发布

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?

3条回答
戒情不戒烟
2楼-- · 2019-09-21 12:02
jObject.Add(key, /* how to add "Undefined" token? */);

jObject.Add(key,JValue.CreateUndefined());
查看更多
叼着烟拽天下
3楼-- · 2019-09-21 12:16

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:

查看更多
我只想做你的唯一
4楼-- · 2019-09-21 12:21

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.

查看更多
登录 后发表回答