【发布时间】:2018-07-14 00:05:16
【问题描述】:
给定以下代码:
var context = JObject.FromObject(new
{
data = new
{
mom = "",
dad = "",
sibling = "",
cousin = ""
}
});
var path = "$.data.calculated";
var token = context.SelectToken(path);
token 将为空。因此,当然,尝试这样做会产生异常:
token.Replace("500");
当然,我已经看到了有关如何向JObject 添加属性的其他示例,但它们似乎都需要您事先了解对象结构。我需要做的是这样的:
if (token == null)
{
context.Add(path);
token = context.SelectToken(r.ContextTarget);
}
然后我可以在新令牌上使用 replace 方法来设置它的值。但是 context.Add(path) 会抛出异常:
"Can not add Newtonsoft.Json.Linq.JValue to Newtonsoft.Json.Linq.JObject."
如何在不知道现有对象结构的情况下使用这样的完整路径动态添加属性?
【问题讨论】:
-
没有内置的方式来做你想做的事。 JsonPath 是一种查询语法;它没有清晰地映射到新对象的创建。类似的问题:Build JObject from JSONPath