将 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 键转换为对象 [重复]的主要内容,如果未能解决你的问题,请参考以下文章