Выкарыстанне Json.NET дадаць лагічнае ўласцівасць

У мяне ёсць гэтыя дадзеныя ў фармаце JSON

{
    "extensions": {
        "settings" : {
            "extension1": {
                "property1": "value 1",
                "property2": "value 2"
            }
        }
    }
}

мая мэта складаецца ў тым, каб дадаць новае булева ўласцівасць з дапамогай Json.NET выглядаць наступным чынам

{
    "extensions": {
        "settings" : {
            "extension1": {
                "property1": "value 1",
                "property2": "value 2",
                "bool_property": true
            }
        }
    }
}

У мяне ёсць толькі гэты код, і я затрымаўся з AddAfterSelf і AddBeforeSelf

string pref = "path_of_the_preferences_file";
string _pref = string.empty;
using (StreamReader reader = new StreamReader(pref, Encoding.UTF8))
{
    _pref = reader.ReadToEnd();
}

// REFORMAT JSON.DATA
JObject json = JObject.Parse(_pref);
var extension1 = json["extensions"]["settings"]["extension1"];

Як ўставіць новы лагічны ўласцівасць «bool_property»?

дзякуй

2
што гэта трэба рабіць з Json.NET?
дададзена аўтар Daniel A. White, крыніца
што гэта трэба рабіць з Json.NET?
дададзена аўтар Daniel A. White, крыніца
Я выкарыстоўваю Json.NET ад newtonsoft для десериализации дадзеных JSON і маніпуляваць ёю, каб дадаць дадатковае ўласцівасць.
дададзена аўтар Jayson Ragasa, крыніца
Я выкарыстоўваю Json.NET ад newtonsoft для десериализации дадзеных JSON і маніпуляваць ёю, каб дадаць дадатковае ўласцівасць.
дададзена аўтар Jayson Ragasa, крыніца

6 адказы

А JObject , па сутнасці слоўнік. Проста атрымаць спасылку на аб'ект, які вы хочаце дадаць ўласцівасць і дадаць яго.

var propertyName = "bool_property";
var value = true;

var obj = JObject.Parse(json);
var extension1 = obj.SelectToken("extensions.settings.extension1") as JObject;
if (extension1 != null)
{
    extension1[propertyName] = value;
}

Калі вы арыентуецеся .NET 4 і вышэй, вы ведаеце структуру JSON і імя ўласцівасці вы хочаце дадаць, вы можаце выкарыстоўваць дынамічны тут.

var value = true;

dynamic obj = JObject.Parse(json);
obj.extensions.settings.extension1.bool_value = value;

Вы нават можаце зьмешваць і спалучаць.

var propertyName = "bool_property";
var value = true;

dynamic obj = JObject.Parse(json);
obj.extensions.settings.extension1[propertyName] = value;
7
дададзена

А JObject , па сутнасці слоўнік. Проста атрымаць спасылку на аб'ект, які вы хочаце дадаць ўласцівасць і дадаць яго.

var propertyName = "bool_property";
var value = true;

var obj = JObject.Parse(json);
var extension1 = obj.SelectToken("extensions.settings.extension1") as JObject;
if (extension1 != null)
{
    extension1[propertyName] = value;
}

Калі вы арыентуецеся .NET 4 і вышэй, вы ведаеце структуру JSON і імя ўласцівасці вы хочаце дадаць, вы можаце выкарыстоўваць дынамічны тут.

var value = true;

dynamic obj = JObject.Parse(json);
obj.extensions.settings.extension1.bool_value = value;

Вы нават можаце зьмешваць і спалучаць.

var propertyName = "bool_property";
var value = true;

dynamic obj = JObject.Parse(json);
obj.extensions.settings.extension1[propertyName] = value;
7
дададзена

<�Моцны> Deserialize ваш JSON, дадаць ўласцівасць і сериализовать яго назад у радок.

dynamic sourceJson = JsonConvert.DeserializeObject(json, typeof(object));
sourceJson.extensions.settings.extension1.bool_property = false;
var modifiedJson = JsonConvert.SerializeObject(sourceJson, Formatting.Indented);
3
дададзена

<�Моцны> Deserialize ваш JSON, дадаць ўласцівасць і сериализовать яго назад у радок.

dynamic sourceJson = JsonConvert.DeserializeObject(json, typeof(object));
sourceJson.extensions.settings.extension1.bool_property = false;
var modifiedJson = JsonConvert.SerializeObject(sourceJson, Formatting.Indented);
3
дададзена

зразумела

string pref = "path_of_the_preferences_file";
string _pref = string.empty;
using (StreamReader reader = new StreamReader(pref, Encoding.UTF8))
{
    _pref = reader.ReadToEnd();
}

// REFORMAT JSON.DATA
JObject json = JObject.Parse(_pref);
var extension1 = json["extensions"]["settings"]["extension1"];

var a = extension1.Children();
JProperty cond_it = null;

foreach (var b in a)
{
    if (b.ToString().ToLower().Contains("cond_it"))
    {
        cond_it = (JProperty)b;

        break;
    }
}

if (cond_it != null)
{
    var b = cond_it.Value.SelectToken("location").Parent;
    b.AddAfterSelf(new JProperty("blacklist", true));
}
0
дададзена

зразумела

string pref = "path_of_the_preferences_file";
string _pref = string.empty;
using (StreamReader reader = new StreamReader(pref, Encoding.UTF8))
{
    _pref = reader.ReadToEnd();
}

// REFORMAT JSON.DATA
JObject json = JObject.Parse(_pref);
var extension1 = json["extensions"]["settings"]["extension1"];

var a = extension1.Children();
JProperty cond_it = null;

foreach (var b in a)
{
    if (b.ToString().ToLower().Contains("cond_it"))
    {
        cond_it = (JProperty)b;

        break;
    }
}

if (cond_it != null)
{
    var b = cond_it.Value.SelectToken("location").Parent;
    b.AddAfterSelf(new JProperty("blacklist", true));
}
0
дададзена