Newtonsoft JSON在运行时获取特定的嵌套属性

我穆尔扎

如何在运行时从JSON对象获取特定嵌套属性的值?这是一个说明我要执行的操作的示例(无需进行错误检查,因为这只是一个简单的示例):

JSON对象:

string jsonobj = "{ 
    "Header":"someHeader",
    "FirstNest":{
        "Property1":"123",
        "property2":"321",
        "SecondNest":{
            "property3":"456",
            "property4":"789"
        }
    }

在我的代码中,我会有这样的东西:

string read = Console.ReadLine();

例如FirstNest.Property1用户将在哪里输入,然后返回123我可以做这样的事情:

JObject msg = JObject.Parse(jsonobj);
string[] tosearch = read.Split('.'); // This would give me FirstNest Property1
string tofind = (string)msg[tosearch[0]][tosearch[1]]; 

当用户想要访问时会出现问题FirstNest.SecondNest.property3,因为我的硬编码方法只能接受两个字符串。如何在运行时构建这样的“查询”方法,使用户可以搜索任何属性?一个灵魂就是发挥作用

GetProperty(JObject msg, string str1, string str2)
{
    return (string)msg[str1][str2];
}

然后是另一个,它将以3个字符串作为输入:

GetProperty(JObject msg, string str1, string str2, string str3)
{
    return (string)msg[str1][str2][str3];
}

,然后是另一个,它将需要4个字符串作为输入,依此类推...这似乎不是一个有效的解决方案。

杰森·博伊德(Jason Boyd)

怎么样(为简洁起见,排除异常处理):

public string GetJsonPropertyValue(string json, string query)
{
    JToken token = JObject.Parse(json);

    foreach(string queryComponent in query.Split('.'))
    {
        token = token[queryComponent];
    }
    return token.ToString();
}

给定示例中的json,FirstNest.SecondNest.property3将返回搜索结果456您应该包括任何必要的用户输入验证和异常处理。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

NewtonSoft在运行时添加JSONIGNORE

来自分类Dev

当引用Newtonsoft.Json.dll时,在单声道下在运行时编译C#代码失败

来自分类Dev

如何修复json.net(Newtonsoft.Json)运行时文件加载异常

来自分类Dev

Newtonsoft JSON自动映射特定属性

来自分类Dev

JSON从Newtonsoft到JavaScript

来自分类Dev

构建Json Newtonsoft Jarray

来自分类Dev

Newtonsoft.Json.JsonReaderException

来自分类Dev

构建Json Newtonsoft Jarray

来自分类Dev

Newtonsoft Json 动态对象

来自分类Dev

使用NewtonSoft获取特定的Json字段

来自分类Dev

Newtonsoft JSON动态属性名称

来自分类Dev

与Newtonsoft.Json的装配冲突

来自分类Dev

在Newtonsoft JSON中转义引号

来自分类Dev

使用Newtonsoft解析JSON数组

来自分类Dev

从TypeProvider引用Newtonsoft.Json

来自分类Dev

与Newtonsoft.Json的装配冲突

来自分类Dev

C#JSON Newtonsoft转换

来自分类Dev

Newtonsoft JSON:TypeNameHandling - $type 目的

来自分类Dev

使用 Newtonsoft Linq 访问嵌套的 JSON 数据

来自分类Dev

在运行时通过反射获取嵌套泛型类型对象的属性和属性值

来自分类Dev

如何使用NewtonSoft更新JSON对象的属性

来自分类Dev

获取异常Newtonsoft.Json.JsonReaderException

来自分类Dev

Newtonsoft.json JSON.NET

来自分类Dev

使用Newtonsoft.Json生成JSON问题

来自分类Dev

无效的JSON对象错误:NewtonSoft Json

来自分类Dev

Newtonsoft JSON - 不同的 JSON 结构,对象与数组

来自分类Dev

使用 NewtonSoft JSON 解析 JSON 数组

来自分类Dev

在运行时获取application.properties属性?

来自分类Dev

在运行时动态获取Mule流的属性值