我目前正在努力解决使用javascript阅读JSON文件的问题。
我不完全确定这是否是带有数组的JSON文件的正确格式,但这是我的JSON文件。
[
{
"passageNumber":"2.3.1",
"title":"Inside and out: A bronze Athena and a Temple of Octavia",
"preReading":"This paragraph appears to refer to what the excavators named Temple E...",
"reading":"<span>Lorem</span> ipsum <span>dolor</span> sit amet, consectetur",
"media":"<img src='img/TempleE-capital.jpg'>",
"lon":"41.925",
"lat":"-91.426"
},
{
"passageNumber":"2.3.2",
"title":"The Road to Lechaeum",
"preReading":"<a href='http://google.com'>yipppie",
"postReading":"",
"reading":"blahhhhhhhhhhhhhhhhhh.",
"media":"<img src='img/templE-brick.jpg'>",
"lon":"41.625",
"lat":"-91.672"
}
]
我最终希望能够读取JSON文件(最有可能使用JQuery),然后选择给定段落编号的所有信息。
任何帮助都会很棒。
谢谢!
的修改
我从外部JSON文件中提取这个。它需要加载JSON文件。
答案 0 :(得分:4)
下面是如何阅读JSON的示例代码段。
var JSONDataFromExternalFile = '[{"passageNumber":"2.3.1","title":"Inside and out: A bronze Athena and a Temple of Octavia","preReading":"This paragraph appears to refer to what the excavators named Temple E...","reading":"<span>Lorem</span> ipsum <span>dolor</span> sit amet, consectetur","media":"<img src=\'img/TempleE-capital.jpg\'>","lon":"41.925","lat":"-91.426"},{"passageNumber":"2.3.2","title":"The Road to Lechaeum","preReading":"<a href=\'http://google.com\'>yipppie","postReading":"","reading":"blahhhhhhhhhhhhhhhhhh.","media":"<img src=\'img/templE-brick.jpg\'>","lon":"41.625","lat":"-91.672"}]'
var data = JSON.parse(JSONDataFromExternalFile);
function getDetails(passageNumber){
for(i in data){
if (data[i].passageNumber == passageNumber)
return data[i];
}
return false;
}
var details = getDetails("2.3.2");
alert("title > "+details.title);
alert("preReading > "+details.preReading);
var details = getDetails("2.3.1");
alert("title > "+details.title);
alert("preReading > "+details.preReading);
在您的代码中,它可能看起来像这样。
<强>更新强>
$.ajax({
url: "http://www.json-generator.com/api/json/get/cgRivNixNK",
type: "POST", //type:"GET"
dataType: "JSON",
success: function(data){
console.log(data)
}
})
OR
$.ajax({
url: "http://www.json-generator.com/api/json/get/cgRivNixNK",
type: "POST", //type:"GET"
dataType: "JSON"
})
.done(function(data){
console.log(data)
});
答案 1 :(得分:0)
是的,该示例是有效的JSON。
您可以使用jQuery.getJSON
阅读文件并使用数据答案 2 :(得分:0)
function getDetails(passageNumber, strJSON) {
var obj = jQuery.parseJSON(strJSON);
$.each(obj, function (key, value) {
if (passageNumber == value.passageNumber) {
result = value;
return false;
}
});
return result;
}
var strJSON = '[\
{"passageNumber":"2.3.1",\
"title":"Inside and out: A bronze Athena and a Temple of Octavia",\
"preReading":"This paragraph appears to refer to what the excavators named Temple E...",\
"reading":"<span>Lorem</span> ipsum <span>dolor</span> sit amet, consectetur",\
"media":"<img src=\'img / TempleE - capital.jpg \'>",\
"lon":"41.925",\
"lat":"-91.426"},\
{"passageNumber":"2.3.2",\
"title":"The Road to Lechaeum",\
"preReading":"<a href=\'http: //google.com\'>yipppie",\
"postReading": "",\
"reading": "blahhhhhhhhhhhhhhhhhh.",\
"media": "<img src=\'img/templE-brick.jpg\'>",\
"lon": "41.625",\
"lat": "-91.672"\
}\
]';
var result = getDetails("2.3.1", strJSON);
if(result != null) {
alert(result.passageNumber);
alert(result.title);
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
&#13;
它是一种非常有效的格式,代表对象数组。
要按段号查找信息,以下功能将对您有所帮助:
function getDetails(passageNumber, strJSON) {
var obj = jQuery.parseJSON(strJSON);
$.each(obj, function (key, value) {
if (passageNumber == value.passageNumber) {
result = value;
return false;
}
});
return result;
}
只需将您的段号和json文本传递给该函数,它将返回映射到该特定段号的相应信息。我也附上了一个代码片段。
最好预处理要存储的数据作为段落编号的关键值对,并且相应的数据提供的段落编号是唯一的,并且对获取数据的调用很高。