在几个 JObject 中替换 属性 的 JSON 值

Replace a JSON value of a property in several JObjects

我有一个 JSON 文件,我正在从文本中读取并使用 Newtonsoft.Json.Linq 将其解析为 JObject。 JSON 文件如下所示:

{  
   "EntityTypeDto":[  
      {  
         "EntityType":"Grade",
         "Language":"ES"
      },
      {  
         "EntityType":"ApplicationType",
         "Language":"ES"
      },
      {  
         "EntityType":"Borough",
         "Language":"ES"
      }

   ]
}

使用 Newtonsoft 库,是否有任何方法可以利用 JObject 将所有对象的语言 属性 替换为另一个值?如果不是,另一种方法是什么?此项目是 C#、VS 2012 中的控制台应用程序,谢谢。

这里不需要Linq来实现你需要的,Linq是用来查阅数据的,不是用来修改数据的。所以你可以,例如,一个 foreach 来迭代和修改数组的元素:

JObject json= JObject.Parse(jsonString);
JArray entityTypeDtos= (JArray)json["EntityTypeDto"];
foreach(var e in entityTypeDtos)
{
  if(e["Language"] != null)
     e["Language"]="EN";
}

我根据 Linq 标签猜测您想要 Linq 方法试试这个

string json = @"{  
   'EntityTypeDto':[  
      {  
         'EntityType':'Grade',
         'Language':'ES'
      },
      {  
         'EntityType':'ApplicationType',
         'Language':'ES'
      },
      {  
         'EntityType':'Borough',
         'Language':'ES'
      }
   ]
}";


JObject myjobj = JObject.Parse(json);

JArray EntityType = (JArray)myjobj["EntityTypeDto"];

(from eobj in EntityType 
where eobj["Language"]="ES"
select eobj).ForEach(x => x["Language"]="New Value");