我有一个字符串数组。我想从中创建一个JSON文件,使用字符串作为属性名称和最终值将其映射到嵌套对象的层次结构。例如,如果array包含{"A", "B", "C", "D"}
,则生成的JSON文件应类似于
{
"A": {
"B": {
"C": "D"
}
}
}
有什么办法吗?
您可以使用LINQ和JSON序列化程序(json.net或javascriptserializer,如下所示从字符串数组生成一组嵌套的JSON对象:
var input = new[]{"A","B","C","D"};
var data = input
.Reverse()
.Aggregate((object)null, (a, s) => a == null ? (object)s : new Dictionary<string, object>{ { s, a } });
var json = JsonConvert.SerializeObject(data, Formatting.Indented);
该算法的工作原理是:反向移动传入的字符串序列,返回最后一个项目的字符串本身,并返回一个字典,其中包含一个由当前项目作为键并由先前返回的对象为后续项目赋值的条目。返回的字典或字符串随后可以序列化以产生所需的结果。
演示小提琴here。