使用Javascript和Reactjs中的给定键验证json

2fjabf4q  于 2022-12-27  发布在  Java
关注(0)|答案(2)|浏览(84)

我在JSON下面有

[
 {
  "name":"john",
  "school":"school 2",
  "address":"newyork"
 },
 {
  "name":"peter",
  "school":"school 1",
  "address":"washington"
 }
]

在这里我想验证下面提到的事情,
1-它应该是一个数组2-它必须只有3个字段(名称、学校、地址),不能多于或少于这三个字段3-"学校"可以是"学校1"或"学校2","地址"可以是"纽约"或"华盛顿"
我需要使用react js和javascript来完成这个任务
先谢了

ilmyapht

ilmyapht1#

使用yup进行确认

const schema = yup.array()
    .of(
      yup.object().shape({
        name: yup.string().required("Required"),
        school: yup.mixed().oneOf(['school 1','school 2']),
        address: yup.mixed().oneOf(['newyork','washington'])
      }).noUnknown(true)
    )

并验证,

await schema.validate(your_object).catch(function (err) {
  err.name; // => 'ValidationError'
  err.errors;
});
  • 注:未测试此验证 *
hjqgdpho

hjqgdpho2#

下面是您尝试执行的操作的简化函数

const validateJSON = (json) => {
  if (!Array.isArray(json)) {
    return false;
  }
  for (const element of json) {
    if (Object.keys(element).length !== 3) {
      return false;
    }
    if (element.school !== "school 1" && element.school !== "school 2") {
      return false;
    }
    if (element.address !== "newyork" && element.address !== "washington") {
      return false;
    }
  }

  return true;
};

那就用const isValid = validateJSON(json);

相关问题