@Fox Увеличиваю, не особо помогает.
Создал очередь с глобальной переменной, вроде стало лучше.
@lcatlas said in Json целиком с добавлением значения:
Всем добрый день, есть код -
json строка не полная
Сделал на JS, но BAS такие извращения не кушает, к сожалению.
замените let на var и будет работать
@lcatlas said in Json целиком с добавлением значения:
Да, прошу прощения, там очень много значений просто. Сейчас конец вставлю.
С вар - спасибо большое, сейчас поэксперементирую.
Только что проверил, всё работает
[[JSON]] = '{"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}]}'
var func_search = function(jsonstr, title_song) {
var obj = JSON.parse(jsonstr);
obj.list.forEach(function(item) {
if (item.song.title == title_song) {
item.requests.push({"name":"Alex","amount":1});
}
});
return JSON.stringify(obj)
};
log([[JSON]])
[[RESULT]] = func_search([[JSON]], "555");
log([[RESULT]])
тестовый скрипт
Не совсем понятно, зачем вы из функции возвращаете объект найденного в массиве по условию названия песни. Я решил для наглядности вернуть весь изменённый json
@lcatlas said in Json целиком с добавлением значения:
Он мне требуется для возврата post-ом после изменения обратно на сервер.
В таком случае я бы сделал проще:
[[JSON]] = '{"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}]}'
var title = "555"
var obj = JSON.parse([[JSON]])["list"].filter(function(c){return c.song.title == title})[0]
obj.requests.push({"name":"Alex","amount":1})
[[RESULT]] = JSON.stringify(obj)
log([[JSON]])
log([[RESULT]])
тестовый скрипт
@lcatlas said in Json целиком с добавлением значения:
Эх, все таки лист в начале нужен ))
{"list": [ и закрывающая }
Дак добавьте, 5 символов кода всего:
[[JSON]] = '{"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}]}'
var title = "555"
var obj = JSON.parse([[JSON]])["list"].filter(function(c){return c.song.title == title})[0]
obj.requests.push({"name":"Alex","amount":1})
[[RESULT]] = JSON.stringify({"list":[obj]})
log([[JSON]])
log([[RESULT]])
@Fox said in Json целиком с добавлением значения:
JSON.stringify({"list":[obj]})
Прошу прощения, голова уже не варит совсем. На выходе у меня получается }]}
Надо }}, с этим и получилась заминка, к сожалению.
А квадратные скобки после [{"name":"222","amount":1}]
@lcatlas said in Json целиком с добавлением значения:
@Fox said in Json целиком с добавлением значения:
JSON.stringify({"list":[obj]})
Прошу прощения, голова уже не варит совсем. На выходе у меня получается }]}
Надо }}, с этим и получилась заминка, к сожалению.
Я вас не понимаю. Json строку я указал валидную, объект с свойством list и значением - массивом объектов. О каких фигурных скобках вы говорите?
{"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}}
Это мой косяк. Вот оригинал строки.
На выходе у меня получается по коду }]} в конце и теряются [{"name":"222","amount":1} - здесь.
Оригинал [{"name":"222","amount":1}]
И в конце }}
@lcatlas said in Json целиком с добавлением значения:
{"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}}Это мой косяк. Вот оригинал строки.
На выходе у меня получается по коду }]} в конце и теряются [{"name":"222","amount":1} - здесь.
Оригинал строки является невалидной json строкой, проверьте на https://jsoneditoronline.org/
{
"list": [
{
"id": 0,
"requests": [
{
"amount": 5,
"name": "some-user"
}
],
"note": "string",
"botRequestBy": "string",
"nonlistSong": "string",
"donationAmount": 0,
"createdAt": "string",
"song": {
"title": "string",
"artist": "string"
},
"songId": 0,
"streamerId": 0,
"position": 0
}
],
"status": {
"songsPlayedToday": 0
},
"previousPosition": 0,
"queue": {
"id": 0,
"requests": [
{
"amount": 5,
"name": "some-user"
}
],
"note": "string",
"botRequestBy": "string",
"nonlistSong": "string",
"donationAmount": 0,
"createdAt": "string",
"song": {
"title": "string",
"artist": "string"
},
"songId": 0,
"streamerId": 0,
"position": 0
}
}
Вот так оно у него приходит. Но видимо мне все равно придется пытать разработчика, так как по его методу оно не обновляется, даже если я ставлю, как у него в апи.
В общем спасибо большое, не разберешься так.
@lcatlas said in Json целиком с добавлением значения:
Вот так оно у него приходит.
Вот это валидный json
https://jsoneditoronline.org/?id=f077b358dde64dd18d3a765b45353790
@lcatlas said in Json целиком с добавлением значения:
А где я облажался при сборке? ) Но в целом, оно мне приходит в таком виде по get. Вопрос только как в конце должно быть наверно.
Да беда еще и в том, что урл куда я отдавать должен - 404.
я изначально сделал пример, где беру исходную строку, добавляю параметры и возвращаю всю строку, изменённую. Вы же брали только кусок, скорее всего косяк в этом. А вообще, надо читать мануал по api
https://api.streamersonglist.com/docs/#/ - это весь мануал ))))
Я беру исходную строку целиком, не кусок. То есть очень длинный код JSON.
@lcatlas said in Json целиком с добавлением значения:
https://api.streamersonglist.com/docs/#/ - это весь мануал ))))
Я беру исходную строку целиком, не кусок. То есть очень длинный код JSON.
Изучать апи сервиса мне некогда. В указанной ранее вами функции вы возвращали именно один объект из массива.