C# 使用字符串数组中的嵌套对象动态创建 JSON
Posted
技术标签:
【中文标题】C# 使用字符串数组中的嵌套对象动态创建 JSON【英文标题】:C# Dynamically create JSON with nested objects from array of strings 【发布时间】:2021-05-03 14:23:24 【问题描述】:所以我有一个动态的字符串数组,例如:
["a","b","c,"d"]
或
["x","y","z"]
数组是动态的,可以有可变数量的字符串。
我想创建一个嵌套的 json 对象,与项目的位置顺序相同。
最终结果是:
"a":
"b":
"c":
"d":
或
"x":
"y":
"z":
【问题讨论】:
到目前为止你尝试过什么?另外,您期望什么返回类型?细绳?字典?还有什么? 【参考方案1】:你可以写JObject
得到你想要的:
var strs = new string[] "a", "b", "c", "d" ;
JObject jo = new JObject();
JObject parent = jo;
for (int i = 0; i < strs.Length; i++)
var jo2 = new JObject();
parent[strs[i]] = jo2;
parent = jo2;
// Your final json object is jo
Console.WriteLine(jo);
// string version
string json = jo.ToString(); // or jo.ToString(Formatting.None)
【讨论】:
非常感谢!奇迹般有效。你能解释一下“jo2”如何与“父母”有相同的引用(看起来像那样)吗? @user2653271 不,jo2
始终是对最里面的创建对象的引用。 jo
是最外部的父级,parent
是前一个父级。
抱歉我的无知......在行中:var jo2 = new JObject(); parent[strs[i]] = jo2;
我可以在调试中看到你解释的内容,但我还是不明白......
@user2653271 在循环中,您正在从外到内创建对象。 jo2
是您正在创建的当前对象,您正在将其添加到其父对象。根据这个定义,在每个循环中,jo2 是您创建的最里面的对象。
在第一次迭代中,parent[strs[i]] = jo2;
行之后,parent[strs[i]]
和 jo2
的值都是:"Module":
我希望 jo2 保持新的 JObject...以上是关于C# 使用字符串数组中的嵌套对象动态创建 JSON的主要内容,如果未能解决你的问题,请参考以下文章
Json.net实现方便的Json转C#(dynamic动态类型)对象
Json.net实现方便的Json转C#(dynamic动态类型)对象
Json.net实现方便的Json转C#(dynamic动态类型)对象