Как сохранять данные парсинга в Json?

Sergej

Client
Регистрация
19.04.2015
Сообщения
38
Благодарностей
4
Баллы
8
Подскажите, пожалуйста, как сохранять данные парсинга в Json?

Данные парсинга (список треков) сохраняю пока в CSV, но мне эти данные нужны в JSON формате.
Это мне для личных целей, синхронизации музыки в soundiiz:

Хочу, чтобы в итоге Zennoposter вставлял код JSON в онлайн редактор какого-нибудь хостинга JSON, чтобы ссылка периодически обновлялась новой инфой, но при это сама ссылка была постоянной.

Пример как парсится сейчас в CSV:

Код:
TRACK;Version;ARTISTS
Sacred Dance;Original;Jonathan Rosa  Sereia
Artisan;Main Mix;Neal Porter  Ben Muetsch
EWEH;Ceremonial Mix;Stan Zeff  Toshi

Пример как должно быть JSON:
JSON:
{
     "title": "Name of my playlist",
     "description": "A description for my playlist",
     "tracklist": [
         {
             "title": "With Or Without You",
             "artists": "U2",
             "album": "The Joshua Tree"
         },
         {
             "title": "Love The Way You Lie",
             "artists": [
             "Eminem", "Rihanna"
             ],
             "isrc": "USUV71001543"
         }
     ]
}
 
Последнее редактирование:

Gunjubasik

Client
Регистрация
30.05.2019
Сообщения
3 445
Благодарностей
1 288
Баллы
113
Подскажите, пожалуйста, как сохранять данные парсинга в Json?

Данные парсинга сохраняю пока в CSV, но мне эти данные нужны в JSON формате.
Это мне для личных целей, синхронизации музыки в soundiiz:

Хочу, чтобы в итоге Zennoposter вставлял код JSON в онлайн редактор какого-нибудь хостинга JSON, чтобы ссылка периодически обновлялась новой инфой, но при это сама ссылка была постоянной.

Пример как парсится сейчас в CSV:

Код:
TRACK;Version;ARTISTS
Sacred Dance;Original;Jonathan Rosa  Sereia
Artisan;Main Mix;Neal Porter  Ben Muetsch
EWEH;Ceremonial Mix;Stan Zeff  Toshi

Пример как должно быть JSON:
JSON:
{
     "title": "Name of my playlist",
     "description": "A description for my playlist",
     "tracklist": [
         {
             "title": "With Or Without You",
             "artists": "U2",
             "album": "The Joshua Tree"
         },
         {
             "title": "Love The Way You Lie",
             "artists": [
             "Eminem", "Rihanna"
             ],
             "isrc": "USUV71001543"
         }
     ]
}
Не совсем понятна проблема. У меня все парсит:
93766
 
  • Спасибо
Реакции: Sergej

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 764
Благодарностей
2 407
Баллы
113
Подскажите, пожалуйста, как сохранять данные парсинга в Json?

Данные парсинга сохраняю пока в CSV, но мне эти данные нужны в JSON формате.
Это мне для личных целей, синхронизации музыки в soundiiz:

Хочу, чтобы в итоге Zennoposter вставлял код JSON в онлайн редактор какого-нибудь хостинга JSON, чтобы ссылка периодически обновлялась новой инфой, но при это сама ссылка была постоянной.

Пример как парсится сейчас в CSV:

Код:
TRACK;Version;ARTISTS
Sacred Dance;Original;Jonathan Rosa  Sereia
Artisan;Main Mix;Neal Porter  Ben Muetsch
EWEH;Ceremonial Mix;Stan Zeff  Toshi

Пример как должно быть JSON:
JSON:
{
     "title": "Name of my playlist",
     "description": "A description for my playlist",
     "tracklist": [
         {
             "title": "With Or Without You",
             "artists": "U2",
             "album": "The Joshua Tree"
         },
         {
             "title": "Love The Way You Lie",
             "artists": [
             "Eminem", "Rihanna"
             ],
             "isrc": "USUV71001543"
         }
     ]
}
Вместо значений - подставляете свои переменные с данными - на выходе получаете JSON в виде, который Вам требуется.
C#:
string title= "Name of my playlist";
string description = "A description for my playlist";

var track1 = new Dictionary<string, object>();
                            track1.Add("title","With Or Without You");
                            track1.Add( "artists", "U2");
                            track1.Add("album","The Joshua Tree");
                            
var track2 = new Dictionary<string, object>();
                            track2.Add("title","Love The Way You Lie");
                            track2.Add("artists", new[]{"Eminem", "Rihanna"});
                            track2.Add("isrc","USUV71001543");       
                            
var tracklist = new List<object>();
tracklist.Add(track1);
tracklist.Add(track2);

object ob = new { title, description, tracklist };

return Global.ZennoLab.Json.JsonConvert.SerializeObject(ob,  Global.ZennoLab.Json.Formatting.Indented);
Результат:
JSON:
{
  "title": "Name of my playlist",
  "description": "A description for my playlist",
  "tracklist": [
    {
      "title": "With Or Without You",
      "artists": "U2",
      "album": "The Joshua Tree"
    },
    {
      "title": "Love The Way You Lie",
      "artists": [
        "Eminem",
        "Rihanna"
      ],
      "isrc": "USUV71001543"
    }
  ]
}
 
  • Спасибо
Реакции: bigloafer и Sergej

Wide

Client
Регистрация
04.02.2013
Сообщения
944
Благодарностей
252
Баллы
63
{
"title": "Name of my playlist",
"description": "A description for my playlist",
"tracklist": [
По отдельности или вместе (зависит что есть на данный момент) в список
{
"title": "With Or Without You",
"artists": "U2",
"album": "The Joshua Tree"
},
Тоже в список с запятой.
Далее объединяем список, удаляем последнюю запятую, добавляем в переменную закрывающие теги и готово. Ну это для варианта если в си полный ноль. Можно и на кубиках реализовать.
 
Последнее редактирование:
  • Спасибо
Реакции: Sergej

Sergej

Client
Регистрация
19.04.2015
Сообщения
38
Благодарностей
4
Баллы
8
Вместо значений - подставляете свои переменные с данными - на выходе получаете JSON в виде, который Вам требуется.
C#:
string title= "Name of my playlist";
string description = "A description for my playlist";

var track1 = new Dictionary<string, object>();
                            track1.Add("title","With Or Without You");
                            track1.Add( "artists", "U2");
                            track1.Add("album","The Joshua Tree");
                           
var track2 = new Dictionary<string, object>();
                            track2.Add("title","Love The Way You Lie");
                            track2.Add("artists", new[]{"Eminem", "Rihanna"});
                            track2.Add("isrc","USUV71001543");      
                           
var tracklist = new List<object>();
tracklist.Add(track1);
tracklist.Add(track2);

object ob = new { title, description, tracklist };

return Global.ZennoLab.Json.JsonConvert.SerializeObject(ob,  Global.ZennoLab.Json.Formatting.Indented);
Результат:
JSON:
{
  "title": "Name of my playlist",
  "description": "A description for my playlist",
  "tracklist": [
    {
      "title": "With Or Without You",
      "artists": "U2",
      "album": "The Joshua Tree"
    },
    {
      "title": "Love The Way You Lie",
      "artists": [
        "Eminem",
        "Rihanna"
      ],
      "isrc": "USUV71001543"
    }
  ]
}
Спасибо большое! То что было надо :-)

Я парсю данные в таблицу зенки, потом беру из ячейки данные и сохраняю в переменную. У меня 2 столбца, Artists, Title.
Эти переменные прописал в вашем коде. Но вот, если 100 треков\строк в таблице, то как их лучше сохранить в JSON с помощью вашего кода?
Сейчас переменные добавил так:

C#:
string title= "Name of my playlist";
string description = "A description for my playlist";

var title1 = project.Variables["title_json"].Value;
var artist1 =project.Variables["artist_json"].Value;
var track1 = new Dictionary<string, object>();
                            track1.Add("title",title1);
                            track1.Add( "artists", artist1);
                            track1.Add("album","The Joshua Tree");
                            
var track2 = new Dictionary<string, object>();
                            track2.Add("title","Love The Way You Lie");
                            track2.Add("artists", new[]{"Eminem", "Rihanna"});
                            track2.Add("isrc","USUV71001543");       
                            
var tracklist = new List<object>();
tracklist.Add(track1);
tracklist.Add(track2);

object ob = new { title, description, tracklist };

return Global.ZennoLab.Json.JsonConvert.SerializeObject(ob,  Global.ZennoLab.Json.Formatting.Indented);
 

Sergej

Client
Регистрация
19.04.2015
Сообщения
38
Благодарностей
4
Баллы
8
По отдельности или вместе (зависит что есть на данный момент) в список

Тоже в список с запятой.
Далее объединяем список, удаляем последнюю запятую, добавляем в переменную закрывающие теги и готово. Ну это для варианта если в си полный ноль. Можно и на кубиках реализовать.
Возможно я не понял, но у вас речь о парсинге JSON кода со страницы? Мне нужно наоборот - сохранить спарсенные данные в JSON.
 

BAZAg

Client
Регистрация
08.11.2015
Сообщения
1 764
Благодарностей
2 407
Баллы
113
Спасибо большое! То что было надо :-)

Я парсю данные в таблицу зенки, потом беру из ячейки данные и сохраняю в переменную.
У меня 2 столбца, Artists, Title.
Эти переменные прописал в вашем коде.
Но вот, если 100 треков\строк в таблице, то как их лучше сохранить в JSON с помощью вашего кода?
C#:
var tb = project.Tables["tb"]; // Таблица проекта с именем tb

// Демо данные
tb.AddRow(new[]{"Заголовок1", "Артист1"});
tb.AddRow(new[]{"Заголовок2", "Артист3"});
tb.AddRow(new[]{"Заголовок3", "Артист3"});

string title= "Name of my playlist";
string description = "A description for my playlist";

var tracklist = new List<object>();
for(int i=0;i<tb.RowCount;i++) {
    string[] row = tb.GetRow(i).ToArray(); // Получил строку с таблички
    var title1 = row[0]; // Взял заголовок
    var artist1 =row[1]; // Взял артиста
    
    var track1 = new Dictionary<string, object>();
        track1.Add("title",title1);
        track1.Add( "artists", artist1);
        track1.Add("album","The Joshua Tree");
    tracklist.Add(track1); // Добавил данные
}

object ob = new { title, description, tracklist }; // Сформиоровал структуру

return Global.ZennoLab.Json.JsonConvert.SerializeObject(ob,  Global.ZennoLab.Json.Formatting.Indented);
JSON:
{
  "title": "Name of my playlist",
  "description": "A description for my playlist",
  "tracklist": [
    {
      "title": "Заголовок1",
      "artists": "Артист1",
      "album": "The Joshua Tree"
    },
    {
      "title": "Заголовок2",
      "artists": "Артист3",
      "album": "The Joshua Tree"
    },
    {
      "title": "Заголовок3",
      "artists": "Артист3",
      "album": "The Joshua Tree"
    }
  ]
}
 
  • Спасибо
Реакции: myndeswx и Sergej

Wide

Client
Регистрация
04.02.2013
Сообщения
944
Благодарностей
252
Баллы
63

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)