我有一个具有以下格式的JSON文件:
{
"profiles": {
"Profile1": {
"name": "Nombre 1",
"lastVersionId": "14.23.5.2838",
"javaArgs": "-Xmx8G"
},
"Profile2": {
"name": "Nombre 2",
"lastVersionId": "58.96.004",
"javaArgs": "-Xmx8G"
}
},
"selectedProfile": "Profile1"
}
我需要添加一个新的配置文件,即添加整个块:
"Profile3": {
"name": "Nombre 3",
"lastVersionId": "58.96.004",
"javaArgs": "-Xmx8G"
}
我忘了说我不了解JSON的所有字段,因此,我不能使用类进行反序列化。
我已经尝试了在stackoverflow中找到的一千个代码,但是大多数代码仅用于添加单个字段或编辑现有字段的值。我在vb.net上使用Newtonsoft
我将不胜感激。
答案 0 :(得分:1)
不使用类添加的一种方法是创建一个JObject并将其插入到个人档案中。
dynamic jsonObject = JsonConvert.DeserializeObject(json);
var profile3 = new JObject
{
["name"] = "Nombre 3",
["lastVersionID"] = "58.96.004",
["javaArgs"] = "-Xmx8G"
};
jsonObject["profiles"]["Profile3"] = profile3;
自从您提到“我不知道JSON的所有字段”以来,就很难使用一种方法来实例化配置文件(例如,每次使用一种方法来创建相同的对象,但是如果方法不同,它将具有手动创建和插入。
编辑: 要从内部元素中删除obj,请使用Property和Remove()。如果要包括检查空对象,请使用?.Remove()。
jsonObject["profiles"].Property("Profile3")?.Remove();
编辑2:
您也可以在更新前检查配置文件是否存在。
Console.WriteLine(jsonObject["profiles"]["Profile4"] != null);
// output:
False