首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何循环和验证JavaScript中JSON消息的所有值?

如何循环和验证JavaScript中JSON消息的所有值?
EN

Stack Overflow用户
提问于 2016-06-06 17:09:07
回答 2查看 166关注 0票数 0

为了在我的MongoDB数据库中创建一个新的记录,我需要检查是否定义了接收到的JSON消息的所有字段(null、"“、{}等)。我怎样才能以一种简单、快速(通用)的方式做到这一点呢?

数据库模型:

代码语言:javascript
复制
var measurementSchema = {  
    "initStamp": Date,
    "modStamp": Date,
    "protocol": Number,
    "engine": {
        "amp": Number,
        "volt": Number,
        "temp": Number,
        "pcbTemp": Number,
        "rpm": Number
    },
    "bms": {    
        "amp": Number,
        "volt": Number,
        "percent": Number,
        "ampHours": Number,
        "health": Number,
        "temp": Number,
        "lowVolt": Number,
        "highVolt": Number,
        "avgVolt": Number  
    },
    "mppt": [    {      
        "id": Number,
        "batteryFull": Boolean,
        "overheat": Boolean,
        "noCharge": Boolean,
        "lowVolt": Boolean,
        "volt": Number,
        "amps": Number,
        "batteryVolt": Number,
        "envTemp": Number    
    }  ],
    "gps": {    
        "gpsQuality": Number,
        "gpsTime": Date,
        "satellitesUsed": Number,
        "latitude": Number,
        "nsIndicator": String,
        "longitude": Number,
        "ewIndicator": String,
        "speed": Number,
        "accuracy": Number,
        "vector": {      
            "x": Number,
            "y": Number,
            "z": Number    
        } 
    }
};
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-06-06 18:36:08

试试这样的东西!

代码语言:javascript
复制
function isJSONValid(obj) {

  for (var key in obj) {
    if (obj[key] !== null && obj[key] !== undefined) {
      if (typeof obj[key] === "object") {
        if (Object.keys(obj[key]).length === 0) {
          return false; //invalid
        }
      }
      if (Array.isArray(obj[key])) {
        if (obj[key].length === 0) {
          return false; //invalid
        }
      }
      if (!isJSONValid(obj)) {
        return isJSONValid(obj);
      }

    } else {
      return false; //invalid
    }
  }
  return true; //valid
};

var canICreateNewRecords = isJSONValid(measurementSchema);

编辑:最好回答你的具体情况。

编辑2:在遇到数组的情况下,不要使用typeof。

票数 1
EN

Stack Overflow用户

发布于 2016-06-06 18:44:26

检查空字符串或空数组/对象的一种快速简单的方法是对JSON进行字符串化,并检查null""{}[]的值。

代码语言:javascript
复制
var measurementSchema = {  
  "initStamp": null,
  "engine": {
    "amp": "",
  },
   "mppt": [{}]
};

/""|null|\{\}|\[\]/g.test(JSON.stringify(measurementSchema))  //=> true - a property is not defined
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37663170

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档