如何在 Json 文件中 update/modify 值
How to update/modify values in Json File
我想在 c#
中更新以下类型的 json 文件中的值
{"ItemName":"ABC","Id":1}
{"ItemName":"DEF","Id":2}
{"ItemName":"GHI","Id":3}
{"ItemName":"ABC","Id":1}
{"ItemName":"JKL","Id":2}
{"ItemName":"MNO","Id":3}
我如何删除基于 'ItemName' 的重复值而不是更新 ID。像预期的输出将是:
{"ItemName":"ABC","Id":1}
{"ItemName":"DEF","Id":2}
{"ItemName":"GHI","Id":3}
{"ItemName":"JKL","Id":4}
{"ItemName":"MNO","Id":5}
我搜索了很多有关 json.writer 函数的信息,但找不到不使用 [] 和 , 分隔符的文件解决方案。
但是我可以使用下面的代码读取文件
var jsonReader = new JsonTextReader(new StringReader(File.ReadAllText("path")))
{
SupportMultipleContent = true
};
var jsonSerializer = new JsonSerializer();
dynamic data = jsonSerializer.Deserialize(jsonReader);
while (jsonReader.Read())
{
String Items_name = data.ItemName;
}
你有一个 class 值得:
public record X(string ItemName, int Id);
您阅读了文件中的每一行:
var xs = File.ReadAllLines("path").Select(l => JsonConvert.DeserializeObject<X>(l)).ToList();
您删除了重复项:
var deduped = xs.DistinctBy(x => x.ItemName);
并执行您的其他操作等(也许您会想在上面调用 ToList)。然后你重新序列化:
File.WriteAllLines("path", deduped.Select(x => JsonConvert.SerializeObject(x)).ToArray());
我想在 c#
中更新以下类型的 json 文件中的值{"ItemName":"ABC","Id":1}
{"ItemName":"DEF","Id":2}
{"ItemName":"GHI","Id":3}
{"ItemName":"ABC","Id":1}
{"ItemName":"JKL","Id":2}
{"ItemName":"MNO","Id":3}
我如何删除基于 'ItemName' 的重复值而不是更新 ID。像预期的输出将是:
{"ItemName":"ABC","Id":1}
{"ItemName":"DEF","Id":2}
{"ItemName":"GHI","Id":3}
{"ItemName":"JKL","Id":4}
{"ItemName":"MNO","Id":5}
我搜索了很多有关 json.writer 函数的信息,但找不到不使用 [] 和 , 分隔符的文件解决方案。
但是我可以使用下面的代码读取文件
var jsonReader = new JsonTextReader(new StringReader(File.ReadAllText("path")))
{
SupportMultipleContent = true
};
var jsonSerializer = new JsonSerializer();
dynamic data = jsonSerializer.Deserialize(jsonReader);
while (jsonReader.Read())
{
String Items_name = data.ItemName;
}
你有一个 class 值得:
public record X(string ItemName, int Id);
您阅读了文件中的每一行:
var xs = File.ReadAllLines("path").Select(l => JsonConvert.DeserializeObject<X>(l)).ToList();
您删除了重复项:
var deduped = xs.DistinctBy(x => x.ItemName);
并执行您的其他操作等(也许您会想在上面调用 ToList)。然后你重新序列化:
File.WriteAllLines("path", deduped.Select(x => JsonConvert.SerializeObject(x)).ToArray());