如何序列化这种 json

本文关键字:json 序列化 | 更新日期: 2023-09-27 17:55:45

我有一个 JSON 字符串(不是我创建的),其标识符在 C# 中无效,如下所示:

"OBSBasic.SelectScene": [],
"libobs.hide_scene_item.Captura de Janela": [],

 "push-to-mute-delay": 0,

和儿子...

这是完整的 JSON。

我的问题是:

我如何将该 JSON 转换为一种字典,以便我可以喜欢:

dic["sources"][0]["settings"]["window"] = "XXXX";

我不确定 JSON 文件可以具有的所有可能的属性名称,因此我想真正将其转换为基于数组的方法,以便我可以从而不是从我的用于反序列化的对象的属性名称访问它,例如,如果生成新属性,最终会失败。

我尝试了这样的事情但没有成功:

dynamic data = JsonConvert.DeserializeObject(jsonstr);
data.sources.settings.window = "xxxx";

这导致了运行时异常:

引发的异常: 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' in Microsoft.CSharp.dll 引发的异常: 'Microsoft.CSharp.RuntimeBinder.RuntimeBinderException' in 系统核心.dll

我没有其他代码可以显示 b,因为我被困在字典在DeserializeObject<T>()方法中传递的样子。我想稍后将该 JSON 对象序列化回字符串。

如何序列化这种 json

如果将 JSON 解析为JToken则可以使用要访问数据的语法:

    JToken dic = JToken.Parse(json);
    Console.WriteLine(dic["sources"][1]["settings"]["window"]);

小提琴:https://dotnetfiddle.net/jZrI44