开发环境:
后台:Newtonsoft.Json.dll
前台: json2.js
Model 类包含时间属性,通过Newtonsoft.Json序列化传到前台,通过json2.js 反序列化转为对象总是提示报错。
跟踪判断是 json2.js 对JSON字符串检测有问题
检测方法
text.replace 方法会将JSON字符串替换为
"{]:],]:],]:],]:],]{]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:]},{]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:]},{]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:]},{]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:]}],]:],]:],]:],]:],]:],]:],]:]} "
格式,再通过 /^["],:{}"s]*$/.test()方法检查,但是包含时间属性时
"{]:],]:],]:],]:],]{]:],]:],]:],]:new Date(]),]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:]},{]:],]:],]:],]:new Date(]),]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:]},{]:],]:],]:],]:new Date(]),]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:]},{]:],]:],]:],]:new Date(]),]:],]:],]:],]:],]:],]:],]:],]:],]:],]:],]:]}],]:],]:],]:],]:],]:],]:],]:]}"
/^["],:{}"s]*$/.test() 为false
修改检测方法,多加一个relpace, 将"new Date(])" 替换为 "]"
test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@').
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
replace(/(?:^|:|,)(?:\s*\[)+/g, '').replace(/new Date\(\]\)/g, "]")))
修改后反序列化可以正常运行了