есть файл, в котором лежит массив из объектов. Необходимо его обработать так, чтобы массив передался в переменную. Обращаюсь к файлу таким способом:
constructor(){
super(...arguments);
this.state ={
cards:[]
}
}
componentDidMount(){
fetch(API_URL+'/cards', {headers:API_HEADERS})
.then((response)=>response.text())
.then((responseData) => this.setState({cards:responseData}))
.catch((err)=>console.log('ERR',err));
}
...
в итоге получается просто строка с содержимым этого файла. файл выглядит так:
[{
id: 1,
title: 'card1',
status: 'in-progress',
description: 'desk1',
tasks:[{id:1,name:'task1 for card1',done: true},
{id:2,name:'task2 for card1',done: false},
{id:3,name:'task3 for card1',done: false}]
},{
id: 2,
title: 'card2',
status: 'todo',
description: 'desk2',
tasks:[]
}]
Как правильно передавать содержимое файла в переменную?
У вас возвращается текст, который похож на js
объект. Но в данном случае, превратить его в настоящий js
объект вы сможете только с помощью eval
, что плохо.
Выход один - в файле должен содержаться JSON
, что бы его создать, вам нужно заменить все одинарные скобки на двойные + все ключи обернуть двойными скобками
[
{
"id": 1, // числа можно не оборачивать
"title": "card1",
"status": "in-progress",
// ...
"tasks": [{
"id": 1,
"name": "task1 for card1",
"done": true // boolean тоже не нужно оборачивать
}]
},
// ...
]
Если сделаете это, то сможете легко получать объект из JSON:
// заменив
.then((response)=>response.text())
// на
.then((response)=>response.json())
Здесь можно побаловаться online
Я не знаток react и серверных javascript технологий, но, все же позволю заметить, с высоты знания ES5.
Исхожу из того, что у нас на руках уже есть строковое содержимое файла в переменной data
.
На мой взгляд, правильным было бы использовать функцию JSON.parse(data)
, но содержимое вашего файла не является валидным JSON кодом. Преобразуйте файл в правильный JSON, воспользуйтесь JSON.parse(data)
и проблема будет решена.
Вот здесь коротко и ясно написано про JSON https://learn.javascript.ru/json.
Если же у вас отсутствует возможность привести файл к надлежащему виду, возможно использование функции eval(data)
, т.к. ваш файл является валидным JavaScript кодом. Но это решение порекомендовать не могу, т.к. использование eval()
вызывает у меня легкий приступ паранойи.
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Есть к примеру числа 13121313176781 и 1537275В первом числе нужно получить 6 и 81 так как разделитель 7, а во втором числе нужно получить 2 и 5
Как написать регулярное выражение, которое убирает все символы кроме цифр и символа +?
Всем привет ребят, сейчас ставил Custom MySQL и полгода назад делал тоже самое и был Notifier ( Маленький тулс, который управляет сервером, включает,...