C# 将新的json对象添加到C中现有的json对象#
我想在现有的json文件中添加一个包含歌曲的新播放列表。 我正在使用Newtonsoft Json.NET创建一个Json文件,如下所示:C# 将新的json对象添加到C中现有的json对象#,c#,json,serialization,windows-runtime,C#,Json,Serialization,Windows Runtime,我想在现有的json文件中添加一个包含歌曲的新播放列表。 我正在使用Newtonsoft Json.NET创建一个Json文件,如下所示: dynamic GroupObj = new JObject(); GroupObj.Playlist = new JArray() as dynamic; dynamic PlayListObj = new JObject(); PlayListObj.UniqueId = ""; PlayListObj.Title = "Playlist name";
dynamic GroupObj = new JObject();
GroupObj.Playlist = new JArray() as dynamic;
dynamic PlayListObj = new JObject();
PlayListObj.UniqueId = "";
PlayListObj.Title = "Playlist name";
GroupObj.Playlist.Add(PlayListObj);
PlayListObj.Songs = new JArray() as dynamic;
dynamic SongObj = new JObject();
SongObj.UniqueId = "";
SongObj.Title = "song name";
PlayListObj.Songs.Add(SongObj);
data = GroupObj.ToString();
{
"Playlist": [
{
"UniqueId": "",
"Title": "Playlist name",
"Songs": [
{
"UniqueId": "",
"Title": "song name",
}
]
},
{
"UniqueId": "",
"Title": "Playlist name",
"Songs": [
{
"UniqueId": "",
"Title": "song name",
"Lyrics": "song lyrics",
"Location": "location"
}
]
}
]
}
其结果如下:
{
"Playlist": [
{
"UniqueId": "",
"Title": "Playlist name",
"Songs": [
{
"UniqueId": "",
"Title": "song name",
}
]
}
]
}
我将如何修改Json.NET以向现有对象添加新对象,从而获得如下结果:
dynamic GroupObj = new JObject();
GroupObj.Playlist = new JArray() as dynamic;
dynamic PlayListObj = new JObject();
PlayListObj.UniqueId = "";
PlayListObj.Title = "Playlist name";
GroupObj.Playlist.Add(PlayListObj);
PlayListObj.Songs = new JArray() as dynamic;
dynamic SongObj = new JObject();
SongObj.UniqueId = "";
SongObj.Title = "song name";
PlayListObj.Songs.Add(SongObj);
data = GroupObj.ToString();
{
"Playlist": [
{
"UniqueId": "",
"Title": "Playlist name",
"Songs": [
{
"UniqueId": "",
"Title": "song name",
}
]
},
{
"UniqueId": "",
"Title": "Playlist name",
"Songs": [
{
"UniqueId": "",
"Title": "song name",
"Lyrics": "song lyrics",
"Location": "location"
}
]
}
]
}
没关系,我通过重写整个文件找到了解决办法。可能不是很节约资源,但对于一个学校项目来说,它是有效的。谢谢
string data;
JsonValue val = JsonValue.Parse("{\"some json data\": some value,}");
JsonArray Pl = val.GetObject().GetNamedArray("Playlist");
for (uint x = 0; x != Pl.Count; x++)//go through each playlist
{
var Pl_title = Pl.GetObjectAt(x).GetNamedString("Title"); //get playlist name
if (Pl_title != txtPlaylistName.Text)//dont do anything if playlist exists
{
var Pl_id = Pl.GetObjectAt(x).GetNamedString("UniqueId");
var Pl_loc = Pl.GetObjectAt(x).GetNamedString("Location");
var Pl_img = Pl.GetObjectAt(x).GetNamedString("ImagePath");
//re-create the playlist
dynamic PlayListObj = new JObject();
PlayListObj.UniqueId = Pl_id;
PlayListObj.Title = Pl_title;
PlayListObj.Location = Pl_loc;
PlayListObj.ImagePath = Pl_img;
GroupObj.Playlist.Add(PlayListObj);
PlayListObj.Songs = new JArray() as dynamic;
JsonArray Sng = Pl.GetObjectAt(x).GetNamedArray("Songs");
for (uint y = 0; y != Sng.Count; y++)
{
var Sng_id = Sng.GetObjectAt(y).GetNamedString("UniqueId");
var Sng_title = Sng.GetObjectAt(y).GetNamedString("Title");
var Sng_lyr = Sng.GetObjectAt(y).GetNamedString("Lyrics");
var Sng_loc = Sng.GetObjectAt(y).GetNamedString("Location");
//re-create the songs in the playlist
dynamic SongObj = new JObject();
SongObj.UniqueId = Sng_id;
SongObj.Title = Sng_title;
SongObj.Lyrics = Sng_lyr;
SongObj.Location = Sng_loc;
PlayListObj.Songs.Add(SongObj);
}
}
else
txtBerror.Text = "The name: " + txtPlaylistName.Text + " already exists.";
}
if (txtPlaylistName.Text != string.Empty)
{
//re-create the playlist
dynamic newPlayListObj = new JObject();
newPlayListObj.UniqueId = "PL " + txtPlaylistName.Text;
newPlayListObj.Title = txtPlaylistName.Text;
newPlayListObj.Location = "";
newPlayListObj.ImagePath = "";
GroupObj.Playlist.Add(newPlayListObj);
newPlayListObj.Songs = new JArray() as dynamic;
for (int a = 0; a != 3; a++)//number of songs
{
dynamic SongObj = new JObject();
SongObj.UniqueId = "Sng " + "file name";
SongObj.Title = "file name";
SongObj.Lyrics = "";
SongObj.Location = "";
newPlayListObj.Songs.Add(SongObj);
}
}
else
txtBerror.Text = "Enter a playlist name";
data = GroupObj.ToString();
await Windows.Storage.FileIO.WriteTextAsync(newFile, data);//write to the file
您只有一个播放对象,请尝试创建另一个?这就是问题所在。如何…?如果你要制作一个标准模板,为什么不为播放列表和歌曲开设课程?通过这种方式,您可以轻松地使用Json.Convert()进行序列化