遍历 JSON 对象在 TIMESTAMP 失败"/>
遍历 JSON 对象在 TIMESTAMP 失败
我想通过 mySQL(MariaDB) 数据库响应提供的所有 JSON 数据。
我找到了一个函数来迭代获取和记录键:值对。
之后我想将所有这些值作为 HTML 发送到表格中(目前我不知道如何轻松地做到这一点,但这就是下一步。) (也许我可以通过创建“ul-li”结构来动态创建包含信息的表,如果它是对象或键:值对,以便能够作为正文发送到我的“视图” - 或者也许有更好的解决方案这样做..)
数据库响应的数据如下:
[
{
ID: 5,
UID: 'E123456',
LogDate: 2023-03-24T12:55:25.000Z,
SensorName: 'Sensor1',
SensorValue: '20.01'
},
{
ID: 6,
UID: 'E123456',
LogDate: 2023-03-24T12:55:45.000Z,
SensorName: 'Sensor1',
SensorValue: '21.20'
}
]
迭代JSON的函数是:
function iterateRecursively(object, callbackFunction) {
// Walk through object
for (var keyName in object) {
// If the given parameter is an object, call the function over and
// over again, till you get a string or number
if (typeof object[keyName] === 'object') {
console.log("Object - Typeof : " + typeof(keyName));
iterateRecursively(object[keyName], callbackFunction);
} else {
// Callback function to do something with results outside of main function
if (typeof callbackFunction === 'function') {
callbackFunction(keyName, object[keyName]);
}
}
}
}
这是对数据库的请求并记录数据:
let data = await db.getSensorData(FzID);
iterateRecursively(data, function (key, value) {
console.log(key + " = " + value + "(" + typeof(key) + " : " + typeof(value) + ")");
});
控制台日志:
Object - Typeof : string
ID = 5(string : number)
UID = E123456(string : string)
Object - Typeof : string
SensorName = Sensor1(string : string)
SensorValue = 20.01(string : string)
Object - Typeof : string
ID = 6(string : number)
UID = E123456(string : string)
Object - Typeof : string
SensorName = Sensor1(string : string)
SensorValue = 21.20(string : string)
DB中LogDate列的类型是“timestamp”
为什么 LogDate 被忽略,我怎样才能得到这些值? 感谢您的帮助..
回答如下:答案很简单,LogDate是“object”类型的。您传入的数组也是类型“object”。因此,要使其按照您的意愿工作,您需要检查它是否不是 Date 或 Array,因为 Array 也是类型“object”。
var obj = object[keyName];
if (typeof obj === 'object' && !(obj instanceof Date) && !Array.isArray(obj)) {
console.log("Object - Typeof : " + typeof(keyName));
iterateRecursively(object[keyName], callbackFunction);
}
更多推荐
遍历 JSON 对象在 TIMESTAMP 失败
发布评论