首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点+ Json验证密钥嵌套数组

节点+ Json验证密钥嵌套数组
EN

Stack Overflow用户
提问于 2016-05-09 07:47:32
回答 2查看 116关注 0票数 1

我有json样本。在那个json中,我需要检查以下内容。

  1. 有效与否。
  2. 名称键是必需的,没有空(列表名称和项目名称)。
  3. 项数组长度需要大于5。

我附上了我的代码,但它不起作用。我觉得这样做不好。有谁能告诉我正确的道路吗。

代码语言:javascript
复制
var test = '{ "lists": [ { "items": [ { "name": "Curd0", "sequence": 3 }, { "name": "Curd1", "sequence": 2 }, { "name": "Curd2", "sequence": 1 }, { "name": "Curd3", "sequence": 4 }, { "name": "Curd4", "sequence": 10 }, { "name": "Curd5", "sequence": 9 }, { "name": "Curd6", "sequence": 8 }, { "name": "Curd7", "sequence": 7 }, { "name": "Curd8", "sequence": 6 }, { "name": "Curd9", "sequence": 5 } ], "name": "Curd Family", "status": "new", "created_by": 100036, "created_on": "2016-05-05T13:18:26.169Z" }, { "items": [ { "name": "Milk0", "sequence": 3 }, { "name": "Milk1", "sequence": 2 }, { "name": "Milk2", "sequence": 1 }, { "name": "Milk3", "sequence": 4 }, { "name": "Milk4", "sequence": 10 }, { "name": "Milk5", "sequence": 9 }, { "name": "Milk6", "sequence": 8 } ], "name": "Milk Family", "status": "new", "created_by": 100036, "created_on": "2016-05-05T13:18:44.504Z" }, { "items": [ { "name": "Water0", "sequence": 3 }, { "name": "Water1", "sequence": 2 }, { "name": "Water2", "sequence": 1 }, { "name": "Water3", "sequence": 4 }, { "name": "Water4", "sequence": 10 }, { "name": "Water5", "sequence": 9 }, { "name": "Water6", "sequence": 8 } ], "name": "Water Family", "status": "new", "created_by": 100036, "created_on": "2016-05-05T13:19:02.329Z" }, { "items": [ { "name": "Fruit0", "sequence": 3 }, { "name": "Fruit1", "sequence": 2 }, { "name": "Fruit2", "sequence": 1 }, { "name": "Fruit3", "sequence": 4 } ], "name": "Fruit Family", "status": "new", "created_by": 100036, "created_on": "2016-05-05T13:19:15.503Z" } ] }';


function Validate(data, callback) {

    for (index in lists) {
        if (!lists.index.hasOwnProperty('name')) {
            callback("Name cannot be empty");
        }

        var itemList = lists.index.items;
        if (itemList.length < 5) {
            callback("List need more than 5 lenth");
        }
        for ( i = 0; i < itemList.length; i++) {
            if (!itemList[i].hasOwnProperty('name')) {
                callback("Item Name cannot be empty");
            }
        }

    }
    callback(null);
}


Validate(test, function (err) {

    console.log(err);
});
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-09 08:59:13

每个可能是您所需要的:

代码语言:javascript
复制
function containsNameInLists(element) {
  return element.hasOwnProperty('name');
}

function containsNameInItems(element) {
    return element.items.every(containsKeyName);
}

function containsKeyName(element) {
    return element.hasOwnProperty('name');
}

function lengthSuperiorTo5(element) {
    return element.length > 5;
}

function itemsArrayLength(){
    return element.items.every(lengthSuperiorTo5);
}

您可以使用JSON.parse测试您的字符串是否是有效的JSON字符串

尝试使用字符串来测试不同的功能。

演示

编辑:我添加了附加函数:

编辑演示

票数 1
EN

Stack Overflow用户

发布于 2016-05-09 08:46:09

该回调将多次调用,请添加“返回”:

代码语言:javascript
复制
   return callback(...);

为了在node.js中验证json,有一个很好的库:https://github.com/hapijs/joi

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37110282

复制
相关文章

相似问题

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