Всем добрый день, есть код -
{"list":[{"id":444,"requests":[{"name":"222","amount":1}],"note":null,"botRequestBy":null,"nonlistSong":null,"donationAmount":1,"createdAt":"2020-02-02T18:27:28.762Z","prevId":null,"song":{"title":"555","artist":"","createdAt":"2019-02-05T23:05:23.000Z","attributeIds":[]},"songId":222,"streamerId":999,"position":1}
через запятую все идет тоже самое, но без листа {"id":445,"requests": и тд.
Требуется по названию песни "title":"555" - получить целиком строку
{"id":444,"requests":[{"name":"222","amount":1}],"note":null,"botRequestBy":null,"nonlistSong":null,"donationAmount":1,"createdAt":"2020-02-02T18:27:28.762Z","prevId":null,"song":{"title":"555","artist":"","createdAt":"2019-02-05T23:05:23.000Z","attributeIds":[]},"songId":222,"streamerId":999,"position":1}
После чего добавить в ней значение - {"name":"2","amount":2} на выходе мы получаем:
{"id":444,"requests":[{"name":"222","amount":1},{"name":"2","amount":2}],"note":null,"botRequestBy":null,"nonlistSong":null,"donationAmount":1,"createdAt":"2020-02-02T18:27:28.762Z","prevId":null,"song":{"title":"555","artist":"","createdAt":"2019-02-05T23:05:23.000Z","attributeIds":[]},"songId":222,"streamerId":999,"position":1}
Заранее большое спасибо.
Сделал на JS, но BAS такие извращения не кушает, к сожалению.
Реализация на JS:
let func_search = function(jsonstr, title_song) {
let obj = JSON.parse(jsonstr);
let result;
obj.list.forEach(function(item, i, arr) {
if (item.song.title == title_song) {
item.requests.push({"name":"Alex","amount":1});
//console.log(item.requests);
result = item;
}
});
return result;
};
let result = func_search(jsonstr, "555");
Пытался разобраться с JSonPath, но что-то у меня сложилось впечатление, что ни для чего кроме парсинга он не подойдет.