一尘不染

如何在JObject中添加或更新JProperty值

json

我当前正在使用以下扩展方法来执行此任务,但似乎应该有一些现有的包含方法或扩展来执行此操作(或至少其中一部分)。如果 Json.NET中
没有任何内容,那么推荐的过程是什么,或者我将如何更改下面的代码以更接近推荐的过程。

public static partial class ExtensionMethods
{
    public static JObject SetPropertyContent(this JObject source, string name, object content)
    {
        var prop = source.Property(name);

        if (prop == null)
        {
            prop = new JProperty(name, content);

            source.Add(prop);
        }
        else
        {
            prop.Value = JContainer.FromObject(content);
        }

        return source;
    }
}

我可以确认上面的代码可用于基本用法,但是我不确定它能否在更广泛的使用范围内发挥作用。

我让此扩展名返回a的原因JObject是,您将能够链接调用(对此扩展名或对其他方法和扩展的多次调用)。

var data = JObject.Parse("{ 'str1': 'test1' }");

data
    .SetPropertyContent("str1", "test2")
    .SetPropertyContent("str3", "test3");

// {
//   "str1": "test2",
//   "str3": "test3"
// }

阅读 986

收藏
2020-07-27

共1个答案

一尘不染

正如注释中所述的@dbc一样,您只需使用索引器即可实现此目的。

var item = JObject.Parse("{ 'str1': 'test1' }");

item["str1"] = "test2";
item["str3"] = "test3";

请参阅小提琴以获取更多详细信息

2020-07-27