【发布时间】:2018-04-16 01:58:25
【问题描述】:
需要使用下面显示的相同数据更新ArrayListarlData,但需要删除除前1 之外的albumName 值,即albumName[0] 的值,Json 数据应更新,如下面的输出所示。
static void Main(string[] args)
{
/*Declaration */
ArrayList arlData = null;
arlData = new ArrayList();
Dictionary<string, object> data = null;
//Json data format
string json = @"{""Id"":""1"",""Count"":""2"",""musicName"":""test1"",""albumName"":[""1"", ""2"",""3""]}"
,json2 = @"{""Id"":""2"",""Count"":""1"",""musicName"":""test2"",""albumName"":[""4"", ""5""]}"
,json3 = @"{""Id"":""3"",""Count"":""1"",""musicName"":""test3"",""albumName"":[""6"", ""7""]}";
/*Adding data to array list */
arlData.Add(JsonConvert.DeserializeObject<Dictionary<string, object>>(json));
arlData.Add(JsonConvert.DeserializeObject<Dictionary<string, object>>(json2));
arlData.Add(JsonConvert.DeserializeObject<Dictionary<string, object>>(json3));
int intbytlen = 0;
if (arlData.Count > 0)
{
intbytlen = arlData.Count;
for (int iterator = 0; iterator < intbytlen; iterator++)
{
//Data fetch
data = (Dictionary<string, object>)arlData[iterator];
//Data serialization
Console.WriteLine(JsonConvert.SerializeObject(data, Formatting.Indented));
}
}
}
输出应该是:
{"Id":"1","Count":"2","musicName":"test1","albumName":["1"]}
{"Id":"2","Count":"1","musicName":"test2","albumName":["4"]}
{"Id":"3","Count":"1","musicName":"test3","albumName":["6"]}
【问题讨论】:
-
我会考虑使用库来构建您的 JSON。 Newtonsoft,在我看来是最好的之一。我还将创建一个代表您的 json 字符串的对象,并根据需要进行序列化/反序列化,然后您可以轻松地对对象进行更改。
-
您能否简要介绍一下创建对象并更新反序列化值&我正在使用
Newtonsoft.Json库 -
当然,您将创建模型(类),并且 albumName 属性将返回一个 List
。然后,当您需要进行更改时,您将反序列化您的对象,访问 List 并删除除索引 0 之外的所有项目。然后再次序列化。