【问题标题】:Convert JSON Key into Object [duplicate]将 JSON 键转换为对象 [重复]
【发布时间】: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 部分可以存在多行。

标签: c# json type-conversion


【解决方案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>>();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-26
    • 2015-01-02
    • 2014-08-16
    • 2019-07-14
    • 2020-11-26
    • 2020-10-01
    • 2020-02-06
    相关资源
    最近更新 更多