【发布时间】:2021-11-15 09:27:28
【问题描述】:
最近我开始研究 JSON 解析,我想知道,是否有可能完全动态加载 JSON 文件中的所有内容?通过动态加载,我的意思是在不知道任何键的情况下加载 JSON 文件的所有值,这意味着我无法执行以下代码:
string contents = File.ReadAllText("SomeJsonFile.txt");
JObject obj = JObject.Parse(contents);
var value = obj["SomeKey"];
我不能执行上面的代码的原因是因为这需要应用程序提前知道密钥。
我的目标是能够加载任何 JSON 文件,并从所述 JSON 文件中检索所有值。我希望能够在不知道键的情况下加载嵌套值以及根值。 我有办法做到这一点吗?如果您需要更多信息,请随时询问。
我想使用这些数据的方式是首先将一个文本框绑定到每个键的字符串版本。然后我将动态添加 TextBoxes 到 FlowLayoutPanel,我还希望用户能够更改此数据,并且 JSON 也随之更改。
请帮忙。
【问题讨论】:
-
听起来您打算将嵌套结构展平为列表。这是真的还是您打算保留嵌套结构?
-
你已经完成了。您在不知道键的情况下将 json 动态加载到 JObject 中。
-
@SeanMissingham 我打算展平嵌套结构
-
同意 Alexander 的观点,您已经获得了一个动态加载所有数据的对象。您正在寻找的是一种递归展平 JObject 的方法。我会更新我的答案
-
试试
obj.Properties().Select(p => p.Name)