【发布时间】:2019-07-29 09:47:02
【问题描述】:
我有几种方法可以做到这一点,但我不确定它们是否是最佳实践,我只是想在我继续之前了解您对这个概念的想法。
基本上,我有一个 JSON 数组
"new-samples": [ "Sample5", "Sample4", "Sample3", "Sample2", "Sample1" ]
样本有 5 个项目长,但是如果我想添加一个项目,我不希望数组长到 6 个项目,我希望它循环,像这样 --
添加 1 项:
"new-samples": [ "Sample6", "Sample5", "Sample4", "Sample3", "Sample2" ]
添加 2 个项目
"new-samples": [ "Sample7", "Sample6", "Sample5", "Sample4", "Sample3" ]
所以我目前正在做的是反序列化,删除最后一项,将所有以前的项目设置为增加 1,这使 [0] 为空以将我的新样本添加到其中。我要么这样做,要么创建一个新数组,在 [0] 处添加我的新项目,然后从旧数组中取出项目 [1][2][3][4] 并将其粘贴到新数组中。
这是我的示例代码,因为人们要求它:也未经测试
JObject lpl = JObject.Parse(lpljson);
JArray jarray = (JArray)lpl["new-samples"];
List<string> nlpl = new List<string>();
nlpl.Add(AppNameBox.Text);
foreach (var item in jarray)
{
nlpl.Add(item.ToString());
}
nlpl.RemoveAt(5);
jarray.RemoveAll();
foreach (var item in nlpl)
{
jarray.Add(item);
}
两者看起来都有点难看,有没有更快或更清洁的方法?
【问题讨论】:
-
在codereview 上发布您的完整工作解决方案,并在那里询问如何改进它。
-
我们至少需要看看您是如何反序列化数据的。您使用的结构类型(
Array、List<T>、JArray等)将决定给出什么建议。请注意,几乎所有结构都有在特定索引处插入元素的方法... -
您可以为此使用 ArrayList:docs.microsoft.com/en-us/dotnet/api/…
-
@sinatr 检查我的编辑