JSON.net:当节点有点时获取 JToken 的路径?

JSON.net : get path of a JToken when nodes have dot?

JToken 上有一个 属性 路径。 但如果对象名称包含“.”,它会使用“[' ']”转义对象名称。

是否有其他 属性 将 return 路径作为字符串数组?

没有内置的 属性 可以执行此操作,但您可以制作一个扩展方法来轻松完成您想要的操作:

public static class JsonExtensions
{
    public static string[] PathAsArray (this JToken token)
    {
        return token.AncestorsAndSelf()
                    .OfType<JProperty>()
                    .Select(p => p.Name)
                    .Reverse()
                    .ToArray();
    }
}

然后像这样使用它:

var pathArray = token.PathAsArray();
Console.WriteLine(string.Join("/", pathArray));

Fiddle: https://dotnetfiddle.net/GOdo7t

注意:上述扩展方法会忽略路径中可能存在的任何 JArrays。如果您需要处理数组,则需要对代码进行调整。

正如此处指出的:

在您的字段周围使用方括号和引号。例如,如果您的字段是 valid.key.with.dot

将其称为 ['valid.key.with.dot'] 并在 JsonPath 中尝试

JsonPath.read(jsonString, "$.['valid.key.with.dot']")

看看这个dotNetFiddle