我有一个JSON字符串(不是由我创建的),其标识符在C#中无效,如下所示:
"OBSBasic.SelectScene": [],
"libobs.hide_scene_item.Captura de Janela": [],
和
"push-to-mute-delay": 0,
和儿子......
here's完整的json。
我的问题是:
如何将JSON转换为一种字典,以便我可以这样:
dic["sources"][0]["settings"]["window"] = "XXXX";
我不确定JSON文件可以拥有的所有可能的属性名称,所以我想真正将其转换为基于数组的方法,以便我可以从键访问它而不是用于反序列化的对象的属性名称,例如,如果生成新属性,最终会失败。
我尝试了没有成功的事情:
dynamic data = JsonConvert.DeserializeObject(jsonstr);
data.sources.settings.window = "xxxx";
这导致了运行时异常:
抛出异常: 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException'中 抛出Microsoft.CSharp.dll异常: 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException'中 System.Core.dll
我没有其他代码可以显示因为我坚持认为字典在DeserializeObject<T>()
方法中的传递方式。我想稍后将JSON对象序列化回字符串。
答案 0 :(得分:1)
如果您将JSON解析为JToken
,则可以使用您想要访问数据的语法:
JToken dic = JToken.Parse(json);
Console.WriteLine(dic["sources"][1]["settings"]["window"]);