Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在javascript中解析来自api的数据_Javascript_Json - Fatal编程技术网

在javascript中解析来自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

我正在尝试将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_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--