开发环境:

  后台:Newtonsoft.Json.dll

  前台: json2.js

     Model 类包含时间属性,通过Newtonsoft.Json序列化传到前台,通过json2.js 反序列化转为对象总是提示报错。

     跟踪判断是 json2.js 对JSON字符串检测有问题

检测方法

replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) 

 

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, "]")))

 

修改后反序列化可以正常运行了

 

 

 

 

 

 

 

  

相关文章: