gpt4 book ai didi

c# - 从 JSONPath 构建 JObject

转载 作者:行者123 更新时间:2023-12-05 04:10:47 25 4
gpt4 key购买 nike

我对使用适用于 .NET 的 Newtonsoft JSON 库有点陌生。有什么方法可以从 JSONPath 创建 JObject 或 JToken 吗?

例如下面的内容。

string jsonPath = "$.ArrayA[0].ArrayB[0].Property";
JObject jObj = JObject.FromJSONPath(jsonPath); // SOMETHING LIKE THIS

结果将是一个如下所示的 JObject 或 JToken。

{
"ArrayA": [{
"ArrayB": [{
"Property": ""
}]
}
}

最佳答案

没有。

如果您有一些现有的 JSON,您可以将其解析为 JToken,然后使用 SelectToken 从中选择一个或多个后代 JToken或 SelectTokensJsonPath expression .例如:

string json = @"{ ""ArrayA"": [{ ""ArrayB"": [{ ""Property"": ""foo"" }] }] }";
JToken token = JToken.Parse(json);
JToken fooToken = token.SelectToken("$..Property");
Console.WriteLine(fooToken.ToString()); // prints "foo"

您还可以手动构建 JTokens 的嵌套结构。例如,您可以像这样在您的问题中创建 JObject:

var obj = new JObject(new JProperty("ArrayA", new JArray(
new JObject(new JProperty("ArrayB", new JArray(
new JObject(new JProperty("Property", ""))))))));

但是,除了 JsonPath 表达式之外,没有内置的方法来创建 JToken。你需要推出自己的方法来做类似的事情。但请记住,JsonPath 被设计为一种查询机制;它不能清楚地映射到新对象的创建。以下是您需要考虑的一些问题:

  • 在您的示例表达式 $.ArrayA[0].ArrayB[0].Property 中,Property 是什么类型?它是字符串、数字、 bool 值、对象还是空数组?你会如何具体说明?
  • 您将如何指定创建具有多个属性的对象?
  • $..book[(@.length-1)] 这样的表达式会产生什么?

关于c# - 从 JSONPath 构建 JObject,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43988405/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com