Я не могу изменить формат json. Хранилище данных в новой строке. JSON-файл:
{"ProgMode":"on","wait_h":"5","wait_m":"5","output":"1"}
{"ProgMode":"off","wait_h":"10","wait_m":"10","output":"2"}
Я использую приведенный ниже код, но без скобок ([]) в файле json, это не работает.
var ReqJson = new XMLHttpRequest();
function response(){
if (this.readyState == 4 && this.status == 200){
var myObj = JSON.parse(this.responseText);
const dbParam = JSON.stringify({table:"ProgramView",limit:20});
let text = "<table class='table my-0'>"
for (let x in myObj) {
text += '<tr><td>' + myObj[x].wait_h + ':' + myObj[x].wait_m + ':' + myObj[x].output + '</td></tr>';
}
text += "</table>"
document.getElementById("dynamic_table").innerHTML = text;
}
}
function ProccessConfig(){
ReqJson.open("POST", "Programs.json", true);
ReqJson.onreadystatechange = response;
ReqJson.send()
}
ProccessConfig();
Итак, как я могу разобрать json, который хранится с новыми строками, без запятых и скобок?
🤔 А знаете ли вы, что...
JavaScript позволяет создавать асинхронные запросы к серверу с помощью технологии AJAX.
Вы можете разделить входной текст на строки, а затем «JSON.parse» одну строку.
let myObj = this.responseText.split('\n')
.filter(line => line !== "")
.map(JSON.parse);
Пример на основе вашей строки:
let text = `{"ProgMode":"on","wait_h":"5","wait_m":"5","output":"1"}
{"ProgMode":"off","wait_h":"10","wait_m":"10","output":"2"}
`
let myObj = text.split('\n')
.filter(line => line !== "")
.map(JSON.parse);
console.info(myObj)
вам не нужно разбивать и отображать, это тяжело для этого случая, попробуйте это
var myObj = JSON.parse(`[${this.responseText.replaceAll("}\n","},")}]`);
это немного сложнее, но гораздо надежнее, так как не использует никаких специальных символов
var myObj = JSON.parse(`[{${this.responseText.substring(1).replaceAll("{",",{")}]`);