2014-09-11 4 views
1

노래가있는 새 재생 목록을 기존 json 파일에 추가하려고합니다. 나는이 같은 JSON 파일 생성 Newtonsoft Json.NET을 사용하고 있습니다 : 출력C#의 기존 json 객체에 새 json 객체 추가

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", 
     }   
     ] 
    } 
    ] 
} 

나는 기존에 새로운 객체를 추가 할 Json.NET을 수정 할 방법 다음과 같은 객체 :

{ 
    "Playlist": [ 
    { 
     "UniqueId": "", 
     "Title": "Playlist name", 
     "Songs": [ 
     { 
      "UniqueId": "", 
      "Title": "song name", 
     } 
     ] 
    }, 
    { 
     "UniqueId": "", 
     "Title": "Playlist name", 
     "Songs": [ 
     { 
      "UniqueId": "", 
      "Title": "song name", 
      "Lyrics": "song lyrics", 
      "Location": "location" 
     } 
     ] 
    } 
    ] 
} 
+0

당신은 하나의 playlistObject 만 가지고 있습니다. 다른 것을 만드시겠습니까? – DarthCoder

+0

그게 질문입니다. 어떻게...? – Jnr

답변

0

Nevermind는 전체 파일을 다시 작성하여 해결책을 만들었습니다. 아마도 매우 자원 친화적 인 것은 아니지만 학교 프로젝트의 경우 작동합니다. 감사합니다

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 
+0

표준 템플릿을 만들려면 왜 PlayList 및 Song에 대한 수업이 없습니까? 이렇게하면 Json.Convert <>()를 사용하여 쉽게 직렬화 할 수 있습니다. – DarthCoder

관련 문제