在javascript中解析来自api的数据
我正在尝试将wordpress json api中的数据解析到我的ionic应用程序中,api中的数据如下:在javascript中解析来自api的数据,javascript,json,Javascript,Json,我正在尝试将wordpress json api中的数据解析到我的ionic应用程序中,api中的数据如下: { "event_0_date_from":["20191015"], "event_0_date_to":["20190926"], "event_0_event":["Winter Vacation"], "event_0_description":["Winter vacation"], "event_1_date_from":["20190917"], "event_1_dat
{
"event_0_date_from":["20191015"],
"event_0_date_to":["20190926"],
"event_0_event":["Winter Vacation"],
"event_0_description":["Winter vacation"],
"event_1_date_from":["20190917"],
"event_1_date_to":["20190930"],
"event_1_event":["Dashain Vacation"],
"event_1_description":["--some-data--"],
"event_2_date_from":["--some-data--"],
"event_2_date_to":["--some-data--"],
"event_2_event":["--some-data--"],
"event_2_description":["--some-data--"],
---------------
-------------
--------------
-------------
"event":["3"] this shows total number of events
}
使用javascript,我将如何格式化上述数据并将其保存到某个变量中,以便能够轻松呈现它
events:[
{
"date_from":"20191015",
"date_to":"20190926",
"event":"Winter Vacation",
"description":"Winter vacation"
},
{
"date_from":"20191015",
"date_to":"20190926",
"event":"Winter Vacation",
"description":"Winter vacation"
},
{
"date_from":"--some-data--",
"date_to":"--some-data--",
"event":"--some-data--",
"description":"--some-data--"
},
---------------
-------------
--------------
-------------
]
我尝试了很多方法,但没有一种有效。我认为您应该使用“yourObjekt.event[0]”作为计数器,例如:
var newObjekt = [];
for (var i=0; i<yourObjekt.event[0]; i++) {
newObjekt[i] = {
date_from: yourObjekt["event_"+i+"_date_from"][0],
date_to: yourObjekt["event_"+i+"_date_to"][0],
event: yourObjekt["event_"+i+"_event"][0],
description: yourObjekt["event_"+i+"_description"][0]
}
}
var newObjekt=[];
对于(var i=0;i您只需要迭代json对象。在每次迭代中创建一个新映射,并将这个新创建的映射推送到一个数组中。以下是工作片段
let数据={
“事件日期自”:[“20191015”],
“事件日期”:[“20190926”],
“事件0事件”:[“寒假”],
“活动描述”:[“寒假”],
“事件日期自”:[“20190917”],
“事件日期”:[“20190930”],
“活动”:[“大山假期”],
“事件描述”:[“--某些数据--”],
“事件日期”:[“--某些数据--”],
“事件日期”:[“--某些数据--”],
“事件2事件”:[“--某些数据--”],
“事件描述”:[“--某些数据--”],
“事件”:[“3”]
}
让数组=[];//初始化数组
let index=data.event[0];//事件数
对于(让i=0;i试试这段代码,它将以动态方式包含所有事件属性
var输出=[];
for(数据中的var键){
//解析键
var keyParts=键拆分(“”);
var值=数据[键];
//忽略“事件”总数
如果(keyParts.length>1){
var key=keyParts.slice(2).join(“”“);//从部件生成正确的键
var index=keyParts[1];//索引:0、1、2等。
//在第一次调用中初始化
if(output.hasOwnProperty(index)==false){
输出[索引]={}
}
//追加到输出
输出[索引][键]=值
}
}
用谷歌搜索20分钟(+几分钟用于正确调整计数器)…(JS一生中写了几次)
我不知道如何将它加载到字符串中,也不想转义整个字符串,所以我从文本文件加载它
输入数据:
{
"event_0_date_from":["20191015"],
"event_0_date_to":["20190926"],
"event_0_event":["Winter Vacation"],
"event_0_description":["Winter vacation"],
"event_1_date_from":["20190917"],
"event_1_date_to":["20190930"],
"event_1_event":["Dashain Vacation"],
"event_1_description":["--some-data--"],
"event_2_date_from":["--some-data--"],
"event_2_date_to":["--some-data--"],
"event_2_event":["--some-data--"],
"event_2_description":["--some-data--"]
}
页面和脚本:
<!DOCTYPE HTML>
<html>
<body>
<input type="file" id="upload">
<script>
document.getElementById('upload').addEventListener('change', readFileAsString)
function readFileAsString() {
var files = this.files;
if (files.length === 0) {
console.log('No file is selected');
return;
}
var reader = new FileReader();
reader.onload = function(event) {
//console.log('File content:', event.target.result);
var inputStr = event.target.result;
//console.log(inputStr);
var obj = JSON.parse(inputStr);
//console.log(obj);
var hasNext=true;
var counter = 0;
while(hasNext){
var properties =["date_from","date_to","event","description"];
var propertyPrefix = "event_"
var prop = propertyPrefix + counter + "_" + properties[0];
if(obj.hasOwnProperty(prop)){
console.log("element #" + counter + ": ")
for(var i = 0; i< properties.length;i++){
var propToPrint = propertyPrefix + counter + "_" + properties[i];
//console.log("loading: " + propToPrint)
console.log(" " + obj[propToPrint]);
}
counter++;
}else{
hasNext = false;
}
}
};
reader.readAsText(files[0]);
}
</script>
</body>
</html>
因此,例如,这种方式是可能的:)请至少展示您尝试过的东西,以及它不起作用的方式。您好,欢迎来到stackoverflow,请先看一看,然后随意编辑您的帖子,很多人都在那里帮助您,但请不要期望有人会做您的作业:)你提到你尝试了很多方法,例如哪种方法?也许这只是一些简单的问题,如打字错误等。提前谢谢,祝你好运effort@PrakashPoudel完成,下次请注意,只发布合理的问题,至少显示出最小的努力,谢谢接受,谢谢投票,我无法再问问题喂,兄弟,我们可以使用背面勾号吗?
element #0:
20191015
20190926
Winter Vacation
Winter vacation
element #1:
20190917
20190930
Dashain Vacation
--some-data--
element #2:
--some-data--
--some-data--
--some-data--
--some-data--