C# 更新JSON数组/ArrayLIst C中的字典键值#
需要使用如下所示的相同数据更新C# 更新JSON数组/ArrayLIst C中的字典键值#,c#,.net,json,arraylist,C#,.net,Json,Arraylist,需要使用如下所示的相同数据更新ArrayListarlData,但需要删除albumName值,除前1外,即albumName[0]'s值,Json数据应按如下输出所示进行更新 static void Main(string[] args) { /*Declaration */ ArrayList arlData = null; arlData = new ArrayList(); Dictionary<string, object> data = n
ArrayList
arlData
,但需要删除albumName
值,除前1外,即albumName[0]
's值,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));
}
}
}
考虑使用类似的模型
public class AlbumList
{
public int ID { get; set; }
public int Count { get; set; }
public string MusicName { get; set; }
public List<Album> AlbumName { get; set; }
}
public class Album
{
public int AlbumName { get; set; }
}
公共类相册列表
{
公共int ID{get;set;}
公共整数计数{get;set;}
公共字符串MusicName{get;set;}
公共列表名称{get;set;}
}
公开课相册
{
公共名称{get;set;}
}
然后实例化并用数据填充对象,并添加到列表中。然后,您可以在需要时使用Newtonsoft进行序列化和反序列化
var albums = JsonConvert.DeserializeObject<List<AlbumList>>(json);
var json = JsonConvert.SerializeObject(albums, Formatting.Indented);
var albums=JsonConvert.DeserializeObject(json);
var json=JsonConvert.serialized对象(相册、格式、缩进);
反序列化后,访问列表
,并删除所有非索引0的项
for (int i = 1; i < AlbumList.Count; i++)
{
AlbumList.RemoveAt(i);
}
for(int i=1;i
考虑使用类似的模型
public class AlbumList
{
public int ID { get; set; }
public int Count { get; set; }
public string MusicName { get; set; }
public List<Album> AlbumName { get; set; }
}
public class Album
{
public int AlbumName { get; set; }
}
公共类相册列表
{
公共int ID{get;set;}
公共整数计数{get;set;}
公共字符串MusicName{get;set;}
公共列表名称{get;set;}
}
公开课相册
{
公共名称{get;set;}
}
然后实例化并用数据填充对象,并添加到列表中。然后,您可以在需要时使用Newtonsoft进行序列化和反序列化
var albums = JsonConvert.DeserializeObject<List<AlbumList>>(json);
var json = JsonConvert.SerializeObject(albums, Formatting.Indented);
var albums=JsonConvert.DeserializeObject(json);
var json=JsonConvert.serialized对象(相册、格式、缩进);
反序列化后,访问列表
,并删除所有非索引0的项
for (int i = 1; i < AlbumList.Count; i++)
{
AlbumList.RemoveAt(i);
}
for(int i=1;i
我找到了最简单的方法,不用创建类和属性来更新字典键值和JSON数据,只需使用键入dynamic
从数组列表中获取数据
if (data.ContainsKey("albumName") && data["albumName"] != null)
{
//Assign specific data to type dynamic by deserialising the data
dynamic arryAlbumName = JsonConvert.DeserializeObject(data["albumName"].ToString());
if (arryAlbumName != null && arryAlbumName.Count > 0)
{
for (int count = 0; count < arryAlbumName.Count; count++)
{
if (count == 0)
{
ArrayList albumName = new ArrayList();
//Check for data exists and update the array value to arlData[]
if (!string.IsNullOrEmpty(arryAlbumName[count].ToString()))
{
albumName.Add(arryAlbumName[count]);
data.Remove("albumName");
data.Add("albumName", albumName);
arlData[iterator] = data;
}
}
}
}
}
我找到了最简单的方法,不用创建类和属性来更新字典键值和JSON数据,只需使用
type dynamic
从数组列表中获取数据
if (data.ContainsKey("albumName") && data["albumName"] != null)
{
//Assign specific data to type dynamic by deserialising the data
dynamic arryAlbumName = JsonConvert.DeserializeObject(data["albumName"].ToString());
if (arryAlbumName != null && arryAlbumName.Count > 0)
{
for (int count = 0; count < arryAlbumName.Count; count++)
{
if (count == 0)
{
ArrayList albumName = new ArrayList();
//Check for data exists and update the array value to arlData[]
if (!string.IsNullOrEmpty(arryAlbumName[count].ToString()))
{
albumName.Add(arryAlbumName[count]);
data.Remove("albumName");
data.Add("albumName", albumName);
arlData[iterator] = data;
}
}
}
}
}
我会考虑使用一个库来构建你的JSON。在我看来,Newtonsoft是最好的软件之一。我还将创建一个表示json字符串的对象,并根据需要序列化/反序列化,然后您可以轻松地对对象进行更改。您能否简要介绍一下创建对象并更新反序列化值&我正在使用
Newtonsoft.json
librarySure,您将创建您的模型(类)albumName属性将返回一个列表。然后,当您需要进行更改时,您可以对对象进行反序列化,访问列表并删除除索引0之外的所有项目。然后再序列化。我会考虑使用一个库来构建JSON。在我看来,Newtonsoft是最好的软件之一。我还将创建一个表示json字符串的对象,并根据需要序列化/反序列化,然后您可以轻松地对对象进行更改。您能否简要介绍一下创建对象并更新反序列化值&我正在使用Newtonsoft.json
librarySure,您将创建您的模型(类)albumName属性将返回一个列表。然后,当您需要进行更改时,您可以对对象进行反序列化,访问列表并删除除索引0之外的所有项目。然后再次序列化。