1

如果出于任何原因,不是有效的 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>

4

1 回答 1

4

简单的使用一个tryCatch..

const isPayloadValid = R.pipe(R.tryCatch(getPayload, R.F), validate);
于 2017-05-11T22:20:40.307 回答