首页 > 解决方案 > JSON数组在读取时被拆分为字母

问题描述

我正在尝试读取 JSON 响应,但是当我解析它时,它会被拆分为字母,而不是 JSON 对象。下面是我的代码和调试时看到的结果。

提前致谢。

$.get(sUrl)
  .done(function(results) {
    if (results != null) {
      debugger;
      var resultInJsonFormat = JSON.parse(results);

      // tried this as well
      // var resultInJsonFormat = JSON.parse(results.toString());   
      var resultJsonArray = resultInJsonFormat.TimeEvents;
      var timeEventResults = [];
      for (var i = 0; i < resultJsonArray.length; i++) {
        var resultx = resultInJsonFormat.TimeEvents[i];
      }
    }
  })
  .fail(function(err) {
    if (err !== undefined) {
      var oErrorResponse = $.parseJSON(err.responseText);
      sap.m.MessageToast.show(oErrorResponse.message, {
        duration: 6000
      });
    } else {
      sap.m.MessageToast.show("Unknown error!");
    }
  });

================ 调试器结果 ================

results = "{"TimeEvents":"[{\"timeEventId\":\"5974\",\"empID\":\"00000004\",\"timeEventType\":\"CheckOut\",\"logDate\":\"Oct 16, 2017\",\"logTime\":\"11:00:43 PM\",\"readLogDate\":\"Oct 16, 2017\",\"readlogTime\":\"08:13:55 PM\",\"dayAssignment\":1,\"terminalId\":2,\"origin\":1},{\"timeEventId\":\"5995\",\"empID\":\"00000004\",\"timeEventType\":\"CheckIn\",\"logDate\":\"Oct 17, 2017\",\"logTime\":\"11:45:15 PM\",\"readLogDate\":\"Oct 17, 2017\",\"readlogTime\":\"07:40:41 AM\",\"dayAssignment\":1,\"terminalId\":2,\"origin\":1},{\"timeEventId\":\"10280\",\"empID\":\"00000004\",\"timeEventType\":\"CheckOut\",\"logDate\":\"Oct 24, 2017\",\"logTime\":\"11:45:14 PM\",\"readLogDate\":\"Oct 18, 2017\",\"readlogTime\":\"05:55:43 PM\",\"dayAssignment\":1,\"terminalId\":2,\"origin\":1}]"}"
resultJsonArray = "[{"timeEventId":"5974","empID":"00000004","timeEventType":"CheckOut","logDate":"Oct 16, 2017","logTime":"11:00:43 PM","readLogDate":"Oct 16, 2017","readlogTime":"08:13:55 PM","dayAssignment":1,"terminalId":2,"origin":1},{"timeEventId":"5995","empID":"00000004","timeEventType":"CheckIn","logDate":"Oct 17, 2017","logTime":"11:45:15 PM","readLogDate":"Oct 17, 2017","readlogTime":"07:40:41 AM","dayAssignment":1,"terminalId":2,"origin":1},{"timeEventId":"10280","empID":"00000004","timeEventType":"CheckOut","logDate":"Oct 24, 2017","logTime":"11:45:14 PM","readLogDate":"Oct 18, 2017","readlogTime":"05:55:43 PM","dayAssignment":1,"terminalId":2,"origin":1}]"

iteration i = 0
resultx = "["
iteration i = 1
resultx = "{"

标签: javascriptjsonget

解决方案


results错误地有一个字符串值,而不是您期望的数组。注意第一个冒号后的双引号。

results = "{"TimeEvents":"[{...

遍历字符串中的每个项目将返回一个字符,这就是您所看到的行为。

检查数据的来源。它是否返回有效的 JSON?


推荐阅读