【问题标题】:update json object in c#在 C# 中更新 json 对象
【发布时间】:2015-03-17 06:58:38
【问题描述】:

我有一个类似的 json 对象

{ "name" : "sai", "age" : 22, "salary" : 25000}

我想通过

更新json对象
{ "name" : "sai", "age" : 23, "Gender" : "male"}

然后我想要类似的结果

{ "name" : "sai", "age" : 23, "salary" : 25000, "Gender" : "male"}

我尝试了类似的东西

foreach (var item in actualJson)
{
    bool isFound = false;
    foreach (var newItem in newJson)
    {
        if(item == newItem)  // always returns false, anything wrong with this?
        {
            isFound = true;
            break;
        }
    }

    if(!isFound)
    {
        // add to json
    }
}

我没有任何想法来解决这个问题?

任何帮助/指导将不胜感激。

【问题讨论】:

  • 如果你再次创建一个包含所有元素的 json 会怎样。
  • 如果你再次创建一个包含所有元素的 json 怎么办?第一个也没有性别,那么它是如何更新的。!
  • @utility 请检查更新的问题。我需要上面解释的东西。但它不起作用,引发了一些异常,无​​法向对象添加相同的属性

标签: c# json object edit


【解决方案1】:

使用Json.NET,您可以执行以下操作:

var json1 = "{ \"name\" : \"sai\", \"age\" : 22, \"salary\" : 25000}";
var json2 = "{ \"name\" : \"sai\", \"age\" : 23, \"Gender\" : \"male\"}";

var object1 = JObject.Parse(json1);
var object2 = JObject.Parse(json2);

foreach (var prop in object2.Properties())
{
    var targetProperty = object1.Property(prop.Name);

    if (targetProperty == null)
    {
        object1.Add(prop.Name, prop.Value);
    }
    else
    {
        targetProperty.Value = prop.Value;
    }
}

var result = object1.ToString(Formatting.None);

如果 json1 不存在,这会将 json2 的属性添加到 json1,如果存在则更新值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-14
    • 2016-09-01
    • 1970-01-01
    • 2012-06-28
    • 1970-01-01
    相关资源
    最近更新 更多