从 JSON 对象构建属性列表 c#

阿尔塔基

我想构建包含 json 对象的属性路径的属性列表。

我不知道 json 的结构或可能存在的键。我追求所有级别的键(而不是那些键的值)。

 {
  "Primitive_1": "T1",
  "Object_L1": {
    "Object_L2": {
      "Object_L3": {
        "Object_L4": {
          "Object_L5": {
            "Object_L6": {
              "Array_L7": [
                {
                  "asdasdas": "SampleText1",
                  "WIDTH": "Width2"
                },
                {
                  "gh45gdfg": "SampleText2",
                  "WIDTH": "Width"
                }
              ],
              "12836hasvdkl": "SampleText3",
              "WIDTH": "Width"
            }
          }
        },
        "712bedfabsmdo98": "SampleText4",
        "WIDTH": "Width"
      }
    },
    "ALIAS_ID": 1
  },
  "Primitive_2": "T2",
  "Primitive_3": "T3",
  "Primitive_4": "T4"
}

期望的输出:

.Primitive_1 .Object_L1.Object_L2.Object_L3.Object_L4.Object_L5.Object_L6.Array_L7.0.asdasdas
.Object_L1.Object_L2.Object_L3.Object_L4.Object_L5.Object_L6.Array_L7.0.WIDTH
.Object_L1.Object_L2.Object_L3.Object_L4.Object_L5.Object_L6.Array_L7.1.gh45gdfg
.Object_L1.Object_L2.Object_L3.Object_L4.Object_L5.Object_L6.Array_L7.1.WIDTH
.Object_L1.Object_L2.Object_L3.Object_L4.Object_L5.Object_L6.12836hasvdkl
.Object_L1.Object_L2.Object_L3.Object_L4.Object_L5.Object_L6.WIDTH
.Object_L1.Object_L2.Object_L3.712bedfabsmdo98
.Object_L1.Object_L2.Object_L3.WIDTH
.Object_L1.ALIAS_ID
.Primitive_2
.Primitive_3
.Primitive_4

环顾四周后,我已经到了对象的根节点。见小提琴(https://dotnetfiddle.net/wIl1Qw

这在 JS 中似乎相对简单(http://jsfiddle.net/alteraki/bt3zc1wt/)我已经查看了几个响应,我无法在 c# 中找到解决此问题的响应而不知道使用的密钥(我不知道)

任何帮助将非常感激。

系统发育

树遍历算法本质上几乎总是递归的。

因此,以下函数可以执行您想要的操作:

private static IEnumerable<string> GetMembers(JToken jToken)
{
    var members = new List<string>();

    if (jToken is JObject)
    {
        var jObject = (JObject)jToken;

        foreach (var prop in jObject.Properties())
        {
            if (prop.Value is JValue)
            {
                members.Add(prop.Name);
            }
            else
            {
                members.AddRange(GetMembers(prop.Value).Select(member => prop.Name + "." + member));
            }
        }
    }
    else if (jToken is JArray)
    {
        var jArray = (JArray)jToken;

        for (var i = 0; i < jArray.Count; i++)
        {
            var token = jArray[i];

            members.AddRange(GetMembers(token).Select(member => i + "." + member));
        }
    }

    return members;
}

此处提供运行代码的示例

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Poco C ++构建嵌套的JSON对象

来自分类Dev

从Javascript动态构建JSON对象列表

来自分类Dev

Json to C#对象处理动态属性

来自分类Dev

C#保存对象列表与保存对象(来自JSON)

来自分类Dev

jQuery如何从html标签属性构建json对象

来自分类Dev

C#从对象列表中提取属性

来自分类Dev

特定属性的C#总和对象列表

来自分类Dev

cli C ++对特定属性排序对象列表

来自分类Dev

在C#中将列表属性选择为JSON

来自分类Dev

C#中的有序Json属性列表

来自分类Dev

具有A和B或C必需属性的对象的JSON模式

来自分类Dev

使用属性将C#中的对象转换为JSON

来自分类Dev

将JSON对象映射到c#类属性

来自分类Dev

从JSON C#获取部分对象列表

来自分类Dev

将JSON对象转换为C#列表

来自分类Dev

将JSON列表填充到C#对象

来自分类Dev

将JSON反序列化为C#对象列表

来自分类Dev

JSON 使用 listposition C# 序列化对象列表

来自分类Dev

从从 JSON 文件解析的另一个列表列表中构建对象列表

来自分类Dev

C++ Json 库构建

来自分类Dev

使用DataContractJsonSerializer,将JSON字符串反序列化为具有列表和接口作为属性的C#对象

来自分类Dev

使用DataContractJsonSerializer,将JSON字符串反序列化为具有列表和接口作为属性的C#对象

来自分类Dev

c#按对象的属性对对象列表进行排序

来自分类Dev

如何从对象中提取列表类型的属性内的json数组

来自分类Dev

在 Swagger UI 的参数列表中显示 json 对象属性

来自分类Dev

如何按属性过滤两个 json 对象列表?

来自分类Dev

使用 jQuery ajax 调用 PHP 并返回 json 并尝试从 json 对象构建列表

来自分类Dev

如何获取对象列表并创建列表中对象特定属性的JSON?

来自分类Dev

C# 使用 newtonsoft json.net 将 json 数组转换为对象列表

Related 相关文章

  1. 1

    Poco C ++构建嵌套的JSON对象

  2. 2

    从Javascript动态构建JSON对象列表

  3. 3

    Json to C#对象处理动态属性

  4. 4

    C#保存对象列表与保存对象(来自JSON)

  5. 5

    jQuery如何从html标签属性构建json对象

  6. 6

    C#从对象列表中提取属性

  7. 7

    特定属性的C#总和对象列表

  8. 8

    cli C ++对特定属性排序对象列表

  9. 9

    在C#中将列表属性选择为JSON

  10. 10

    C#中的有序Json属性列表

  11. 11

    具有A和B或C必需属性的对象的JSON模式

  12. 12

    使用属性将C#中的对象转换为JSON

  13. 13

    将JSON对象映射到c#类属性

  14. 14

    从JSON C#获取部分对象列表

  15. 15

    将JSON对象转换为C#列表

  16. 16

    将JSON列表填充到C#对象

  17. 17

    将JSON反序列化为C#对象列表

  18. 18

    JSON 使用 listposition C# 序列化对象列表

  19. 19

    从从 JSON 文件解析的另一个列表列表中构建对象列表

  20. 20

    C++ Json 库构建

  21. 21

    使用DataContractJsonSerializer,将JSON字符串反序列化为具有列表和接口作为属性的C#对象

  22. 22

    使用DataContractJsonSerializer,将JSON字符串反序列化为具有列表和接口作为属性的C#对象

  23. 23

    c#按对象的属性对对象列表进行排序

  24. 24

    如何从对象中提取列表类型的属性内的json数组

  25. 25

    在 Swagger UI 的参数列表中显示 json 对象属性

  26. 26

    如何按属性过滤两个 json 对象列表?

  27. 27

    使用 jQuery ajax 调用 PHP 并返回 json 并尝试从 json 对象构建列表

  28. 28

    如何获取对象列表并创建列表中对象特定属性的JSON?

  29. 29

    C# 使用 newtonsoft json.net 将 json 数组转换为对象列表

热门标签

归档