将 JSON 键转换为对象 [重复]

Posted

技术标签:

【中文标题】将 JSON 键转换为对象 [重复]【英文标题】:Convert JSON Key into Object [duplicate] 【发布时间】:2020-11-02 16:12:33 【问题描述】:

我有一个 scnerio,我不知道键的名称,因此无法预先创建属性。 JSON 需要被解析并加载到类中存在的 Dictionary 中。 JSON的格式是这样的

 "SearchCriteria":         
        "firstname":"user1",
        "surname":"User2"                       
    ,
 "RequiredGroups":         
        "UserGroup":"g1",
        "TeacherGroup":"g2"                     
    

问题是参数计数和名称是未知的,可以是任何东西。 JSON 还包含其他部分,例如具有已知键名并与对象映射的RequiredGroups。 需要转换成字典。任何线索......

【问题讨论】:

Dictionary<string, string>? 是单行还是多行 SearchCriteria 部分可以存在多行。 【参考方案1】:

string str1 = "\"SearchCriteria\": \"firstname\":\"user1\", \"surname\":\"User2\" , \"RequiredGroups\": \"UserGroup\":\"g1\",\"TeacherGroup\":\"g2\"  ";

            var jObject1 = JObject.Parse(str1);
            Dictionary<string, string> dictObj = new Dictionary<string, string>();

            IList<string> keys = jObject1.Properties().Select(p => p.Name).ToList();
            foreach(var k in keys)
            
                var s = jObject1[k].ToString();
                dictObj.Add(k, s);
            

【讨论】:

添加牛顿软【参考方案2】:

使用 Newtonsoft.Json.Linq 的示例:

using System;
using Newtonsoft.Json.Linq;
                    
public class Program

    public static void Main()
    
        string json = @"'SearchCriteria':'firstname':'user1','surname':'User2','RequiredGroups':'UserGroup':'g1','TeacherGroup':'g2'";
        JObject o = JObject.Parse(json);
        var dict = o.ToObject<Dictionary<string, object>>();
    

【讨论】:

以上是关于将 JSON 键转换为对象 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将字符串转换为具有重复键的对象到数组

将表单数据数组对象转换为 JSON [重复]

将javascript对象转换为json对象[重复]

将表单数据转换为 JSON 对象 [重复]

将json数据转换为角度2+的对象[重复]

使用 JSON.stringify 将对象转换为字符串显示空对象 [重复]