J'ai une structure json comme celle-ci:
var json =
{
"report": {},
"expense": {},
"invoices": {},
"projects": {},
"clients": {},
"settings": {
"users": {},
"companies": {},
"templates": {},
"translations": {},
"license": {},
"backups": {},
}
}
Je voudrais ajouter un nouvel objet vide comme "report": {} au json
Mon code C # est comme ceci:
JObject json = JObject.Parse(File.ReadAllText("path"));
json.Add(new JObject(fm.Name));
Mais cela me donne une exception: impossible d'ajouter Newtonsoft.Json.Linq.JValue à Newtonsoft.Json.Linq.JObject
Alors, comment puis-je ajouter un JObject nouveau et vide au json
Merci d'avance
Vous obtenez cette erreur car vous essayez de construire un JObject
avec une chaîne (qui est convertie en JValue
). Un JObject
ne peut pas contenir directement un JValue
, ni un autre JObject
, d'ailleurs; il ne peut contenir que JProperties
(qui peut, à son tour, contenir d'autres JObjects
, JArrays
ou JValues
).
Pour le faire fonctionner, changez votre deuxième ligne en ceci:
json.Add(new JProperty(fm.Name, new JObject()));
Démo de travail: https://dotnetfiddle.net/cjtoJn
Un autre exemple
var jArray = new JArray {
new JObject
{
new JProperty("Property1",
new JObject
{
new JProperty("Property1_1", "SomeValue"),
new JProperty("Property1_2", "SomeValue"),
}
),
new JProperty("Property2", "SomeValue"),
}
};
json["report"] = new JObject
{
{ "name", fm.Name }
};
Newtonsoft utilise une approche plus directe, où vous pouvez accéder à n'importe quelle propriété via des crochets []
. Il vous suffit de définir le JObject
, qui doit être créé en fonction des spécificités de Newtonsoft.
Code complet:
var json = JObject.Parse(@"
{
""report"": {},
""expense"": {},
""invoices"": {},
""settings"": {
""users"" : {}
},
}");
Console.WriteLine(json.ToString());
json["report"] = new JObject
{
{ "name", fm.Name }
};
Console.WriteLine(json.ToString());
Sortie:
{
"report": {},
"expense": {},
"invoices": {},
"settings": {
"users": {}
}
}
{
"report": {
"name": "SomeValue"
},
"expense": {},
"invoices": {},
"settings": {
"users": {}
}
}
Comme référence, vous pouvez consulter ce lien: https://www.newtonsoft.com/json/help/html/ModifyJson.htm