【问题标题】:Parse JSON and return false if is not a valid JSON如果不是有效的 JSON,则解析 JSON 并返回 false
【发布时间】:2017-05-11 22:07:29
【问题描述】:

如果由于某种原因,不是有效的 JSON,如何返回 false?

var ajv = new Ajv();
var schema = {
  "properties": {
    "payload": { "type": "string" },
    "topic": { "type": "string" }
  },
  additionalProperties: false
};
var validate = ajv.compile(schema);

// My json string on property payload
const payloadLeans = R.lensProp('payload');
const payloadView = R.view(payloadLeans);

// get payload and parse JSON
const utf8String = prop => { console.log(prop); return prop.toString('utf-8'); } ;
const getPayload = R.pipe(R.over(payloadLeans, utf8String), payloadView, JSON.parse);

// My SCHEMA validation
const isPayloadValid = R.pipe(getPayload, validate);

const myInvalObj = { 
  payload: 'hello": "World" }', // INVALID JSON
  topic: 'robot/20:30:AA:13'
};

const isValid = R.both(validate, getPayload)(myInvalObj); // ERROR! SHOULD RETURN FALSE
console.log(isValid);
<script src="https://cdnjs.cloudflare.com/ajax/libs/ajv/5.0.1/ajv.bundle.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/ramda/0.23.0/ramda.min.js"></script>

【问题讨论】:

    标签: functional-programming ramda.js ajv


    【解决方案1】:

    简单地使用tryCatch ..

    const isPayloadValid = R.pipe(R.tryCatch(getPayload, R.F), validate);
    

    【讨论】:

      猜你喜欢
      • 2019-10-14
      • 2016-03-31
      • 2020-04-16
      • 2018-10-22
      • 1970-01-01
      • 1970-01-01
      • 2014-02-05
      • 1970-01-01
      • 2011-08-18
      相关资源
      最近更新 更多