首页 > 解决方案 > 如何从类型创建 JPath

问题描述

什么是从给定类型创建 JPath 的最佳方法。

假设我有以下课程:

class ClassA
{
    public ClassB ClassB { get; set; }
}

class ClassB
{
    public string Name { get; set; }
}

我想要所有道具的JPath,ClassA例如ClassA.ClassB.Name

Json.Net 中有内置的方法吗?

谢谢!

标签: c#json.net

解决方案


您可以只使用 JObject 的 SelectToken ,如下所示:



      static void Main(string[] args)
            {
                ClassA A = new ClassA()
                {
                    ClassB = new ClassB()
                    {
                        Name = "NameClassB"
                    }
                };

                string json = JsonConvert.SerializeObject(A);
                var obj = JObject.Parse(json);

                var name = obj.SelectToken("$.ClassB.Name");

                System.Console.WriteLine(name); 
               // output --> NameClassB    

            }
        }

        class ClassA
        {
            public ClassB ClassB { get; set; }
        }

        class ClassB
        {
            public string Name { get; set; }
        }


或使用 Newtonsoft.Json.Linq

dynamic stuff = JObject.Parse("{ 'Name': 'Jon Smith', 'Address': { 'City': 'New York', 'State': 'NY' }, 'Age': 42 }");

string name = stuff.Name;
string address = stuff.Address.City;

推荐阅读