如何使用动态JSonPath查询在JObject中设置值?

时间:2018-06-29 16:43:37

标签: c# json jsonpath

以下代码返回预期的json。

代码:

JToken fakeTarget = wrapper.Context.SelectToken("$.data");

返回

{
  "mom": "",
  "dad": "",
  "sibling": "",
  "cousin": "",
  "calculated": ""
}

下面的代码行完成了我需要做的事情,以下警告除外:

wrapper.Context["data"]["calculated"] = "500";

我不需要动态地提供类似的路径,而是需要动态地提供诸如此类的路径,但是语法不正确:

var path = "$.data.calculated";
wrapper.Context.SelectToken(path).Value = "500";

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。 uck必须创建一个对象(下面的valueObject)来获取JToken来替换现有对象。至少有效。请注意,JToken.IsNull()引发未实现的异常,因此目标!= null。真好。

            var valueObject = JObject.FromObject(new
            {
                value = "500"
            });

            JToken target = wrapper.Context.SelectToken(path);
            if (target != null)
            {
                JToken replacement = valueObject.SelectToken("value");
                target.Replace(replacement);
            }