gpt4 book ai didi

c# - 如何通过匹配值从 JSON 字符串中的特定属性中删除值?

转载 作者:太空宇宙 更新时间:2023-11-03 21:08:04 24 4
gpt4 key购买 nike

我有一个像这样的 JSON 字符串:

{"Country":"USA","States":["Chicago","Miami"]}

public string Remove(string json)
{
string[] stateFilter = { "Chicago", "Miami"};
foreach (var state in stateFilter)
{
//here I would like to create new copy of json for each state.
string newJson = {"Country":"USA","States":["Chicago"]} // Removed Miami from json for Chicago
}
}

现在我想通过在 JSON 中查找状态并将其从 JSON 字符串中删除来为每个状态创建一个新的 JSON 字符串。因此每个状态都将包含其新的 JSON 副本,并且不会包含任何其他状态。

例如:芝加哥将在 JSON States 属性中包含 Chicago

我正在尝试的代码:

public string Remove(string json)
{
string[] stateFilter = { "Chicago", "Miami"};
foreach (var state in stateFilter)
{
var jArr = JArray.Parse(json);

jArr.Descendants().OfType<JProperty>()
.Where(p => p.Name == state)
.ToList()
.ForEach(att => att.Remove());
}
}

但上面的代码从 JSON 字符串中删除了属性而不是值。

最佳答案

此解决方案基于您的规范:因此每个状态都将包含其新的 json 副本,并且不会包含任何其他状态

您可以使用 Newtonsoft json 序列化器反序列化 json 为每个状态创建新实例并将它们序列化回 json

public class States
{
public string Country { get; set; }
public List<string> States { get; set; }
}

public IEnumerable<string> GenerateSeparatedListOfStates(string json)
{
var original = JsonConvert.DeserializaeObject<States>(json);

foreach(string state in original.States)
{
var temp = new States
{
Country = state.Country,
States = new List<string> { state }
}
yield return JsonConvert.SerializeObject(temp);
}
}

关于c# - 如何通过匹配值从 JSON 字符串中的特定属性中删除值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39868551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com