No.
If you have some existing JSON, you can parse it to a JToken and then select one or more descendant JTokens from it using SelectToken
or SelectTokens
with a JsonPath expression. For example:
string json = @"{ ""ArrayA"": [{ ""ArrayB"": [{ ""Property"": ""foo"" }] }] }";
JToken token = JToken.Parse(json);
JToken fooToken = token.SelectToken("$..Property");
Console.WriteLine(fooToken.ToString()); // prints "foo"
You can also manually build a nested structure of JTokens. For example, you can create the JObject in your question like this:
var obj = new JObject(new JProperty("ArrayA", new JArray(
new JObject(new JProperty("ArrayB", new JArray(
new JObject(new JProperty("Property", ""))))))));
However, there is no built-in way to create a JToken from nothing but a JsonPath expression. You would need to roll your own method to do something like that. But keep in mind that JsonPath was designed as a query mechanism; it doesn't map cleanly to creation of new objects. Here are some issues you would need to think about:
- In your example expression,
$.ArrayA[0].ArrayB[0].Property
, what type is Property
? Is it string, number, boolean, object or an empty array? How would you specify that?
- How would you specify creation of an object with multiple properties?
- What would an expression like
$..book[(@.length-1)]
create?
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…