私はこのようなjson構造を持っています:
var json =
{
"report": {},
"expense": {},
"invoices": {},
"projects": {},
"clients": {},
"settings": {
"users": {},
"companies": {},
"templates": {},
"translations": {},
"license": {},
"backups": {},
}
}
Jsonに「レポート」:{}のような新しい空のオブジェクトを追加したい
私のC#コードは次のようなものです:
JObject json = JObject.Parse(File.ReadAllText("path"));
json.Add(new JObject(fm.Name));
しかし、それは私に例外を与えます:Newtonsoft.Json.Linq.JValueをNewtonsoft.Json.Linq.JObjectに追加できません
だから、jsonに新しい空のJObjectをどのように追加できますか
前もって感謝します
JObject
を文字列(JValue
に変換される)で構築しようとしているため、このエラーが発生しています。 JObject
には、JValue
を直接含めることも、別のJObject
を含めることもできません。 JProperties
のみを含むことができます(順番に、他のJObjects
、JArrays
またはJValues
を含むことができます)。
動作させるには、2行目を次のように変更します。
json.Add(new JProperty(fm.Name, new JObject()));
もう一つの例
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では、より直接的なアプローチを使用しており、角括弧[]
。 JObject
を設定するだけで、Newtonsoftの仕様に基づいて作成する必要があります。
完全なコード:
var json = JObject.Parse(@"
{
""report"": {},
""expense"": {},
""invoices"": {},
""settings"": {
""users"" : {}
},
}");
Console.WriteLine(json.ToString());
json["report"] = new JObject
{
{ "name", fm.Name }
};
Console.WriteLine(json.ToString());
出力:
{
"report": {},
"expense": {},
"invoices": {},
"settings": {
"users": {}
}
}
{
"report": {
"name": "SomeValue"
},
"expense": {},
"invoices": {},
"settings": {
"users": {}
}
}
参考として、次のリンクをご覧ください。 https://www.newtonsoft.com/json/help/html/ModifyJson.htm