解析 JSON 和 return false 如果不是有效的 JSON

Parse JSON and return false if is not a valid JSON

如果由于某种原因,不是有效的 JSON,如何 return 为假?

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>

简单使用一个tryCatch ..

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