#javascript #json #reactjs #object
#javascript #json #reactjs #объект
Вопрос:
У меня есть объект json, подобный приведенному ниже {"Title":"asb","Date":"2019","Other":"not important"}
Каков правильный способ прочитать этот объект и отобразить в <ul><li>
?
Примечание Я пробовал это, присваивая это состоянию и повторяя состояние с помощью map()
, но это не работает.
Комментарии:
1. Это зависит от того, как вы хотите отобразить свои данные
2. Что вы имеете в виду, не работает? Вы получаете сообщение об ошибке? Если да, то что это за сообщение об ошибке?
3. Не могли бы вы, пожалуйста, быть более конкретными?
4. Если это не массив объекта, то
map
не будет работать5. Привет @brk тогда каков наилучший способ сделать это? один из методов, который я попробовал, заключался в том, чтобы определить новую переменную массива в методе render, передать состояние этому новому массиву, а затем прочитать объект массива с помощью метода map ().
Ответ №1:
map
может использоваться только с массивом, а не с объектом. Используйте Object.entries
, чтобы сначала преобразовать объект в массив
const data = {"Title":"asb","Date":"2019","Other":"not important"}
const App = () =>
<ul>
{
Object.entries(data).map(([key, val]) => <li>{key}: {val}</li>)
}
</ul>
ReactDOM.render(<App />, document.getElementById('root'))
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id="root"></div>
Ответ №2:
Это объект, поэтому map
не будет работать. Повторите Object.entries
вместо:
const object = {"Title":"asb","Date":"2019","Other":"not important"};
Object.entries(object).forEach(([key, value]) => document.getElementById("list").innerHTML = `<li>${key}: ${value}</li>`);
<ul id="list"></ul>
Ответ №3:
Для объекта вы можете использовать цикл for , map лучше использовать для типа массива
var data = {"Title":"asb","Date":"2019","Other":"not important"};
for(var i in data) {
var htm = `<li>${i} : ${data[i]}</li>`;
test.innerHTML = htm;
}
<ul id=test></ul>
Ответ №4:
Вы можете напрямую прочитать приведенный ниже пример: случай 1 :
var text = { "Title": "asb", "Date": "2019", "Other": "not important" };
console.log(text.Date)
результат : 2019
случай 2:
после преобразования и использования
var s = '{"first_name" : "Sammy", "last_name" : "Shark", "location" : "Ocean"}';
var obj = JSON.parse(s);