JSON + Javascript/JQuery. Как импортировать данные из json файла и анализировать его?
Если у меня есть файл JSON
с именем names.json с:
{"employees":[
{"firstName":"Anna","lastName":"Meyers"},
{"firstName":"Betty","lastName":"Layers"},
{"firstName":"Carl","lastName":"Louis"},
]}
Как я могу использовать его содержимое в javascript?
Ответы
Ответ 1
Пример, как это сделать:
<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script>
<script type="text/javascript">
$(function(){
$.getJSON('names.json',function(data){
console.log('success');
$.each(data.employees,function(i,emp){
$('ul').append('<li>'+emp.firstName+' '+emp.lastName+'</li>');
});
}).error(function(){
console.log('error');
});
});
</script>
</head>
<body>
<ul></ul>
</body>
</html>
Ответ 2
Ваш JSON файл не содержит допустимого JSON. Вместо этого попробуйте следующее.
{
"employees":
[
{
"firstName": "Anna",
"lastName": "Meyers"
},
{
"firstName": "Betty",
"lastName": "Layers"
},
{
"firstName": "Carl",
"lastName": "Louis"
}
]
}
Затем вы должны увидеть ответ. Проверьте http://jsonlint.com/
Ответ 3
В коде jQuery вы должны иметь свойство employees
.
data.employees[0].firstName
Итак, это будет так.
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js"></script>
</head>
<body>
<script type="text/javascript">
$.getJSON("names.json", function(data) {
console.log(data);
$('body').append(data.employees[0].firstName);
});
</script>
</body>
</html>
Конечно, вам понадобится это свойство для версии без jQuery, но сначала вам нужно проанализировать ответ JSON.
Также имейте в виду, что document.write
уничтожает всю вашу страницу.
Если у вас по-прежнему возникают проблемы, попробуйте выполнить полный запрос $.ajax
вместо обертки $.getJSON
.
$.ajax({
url: "names.json",
dataType: "json",
success: function(data) {
console.log(data);
$('body').append(data.employees[0].firstName);
},
error: function(jqXHR, textStatus, errorThrown) {
console.log('ERROR', textStatus, errorThrown);
}
});
http://api.jquery.com/jquery.ajax/
Ответ 4
Вы можете просто добавить Javascript файл в свой HTML-код, который объявит ваш объект JSON как переменную. Затем вы можете получить доступ к своим данным JSON из своей глобальной области Javascript, используя data.employees
, например.
index.html:
<html>
<head>
</head>
<body>
<script src="data.js"></script>
</body>
</html>
data.js:
var data = {
"employees": [{
"firstName": "Anna",
"lastName": "Meyers"
}, {
"firstName": "Betty",
"lastName": "Layers"
}, {
"firstName": "Carl",
"lastName": "Louis"
}]
}
Ответ 5
Если вы хотите использовать PHP.
<?php
$contents = file_get_contents('names.json');
?>
<script>
var names = <?php echo $contents; ?>
var obj = JSON.parse(names);
//use obj
</script>
При необходимости используйте его async:
<script>
$(document).ready(function(){
$.get("get_json.php?file=names",function(obj){
//use obj here
},'json');
});
</script>
PHP:
<?php
$filename = $_GET['file'] . '.json';
$data['contents'] = file_get_contents($filename);
echo json_encode($data);
?>