首页 新闻 搜索 专区 学院

一个字符串是否为JSON对象,这个可以用正则匹配吗?

0
悬赏园豆:50 [已关闭问题] 解决于 2013-07-11 15:53

不用每次都反序列化字符串尝试,(失败会有异常,影响性能)

所以想通过正则验证,是否是正确的json格式。

比如字符串  {"aa}":"}"}  每次通过Socket读取5个字节。

验证Socket是否传输完毕。想用一个正则匹配下。

包拯的主页 包拯 | 初学一级 | 园豆:9
提问于:2013-07-04 13:53
< >
分享
其他回答(1)
0

1. 如果用正则表达式,参考这里:How to check if a string is a valid JSON string in JavaScript without using Try/Catch

2. 如果用Json.NET,参考这里:Validating JSON with JSON Schema

收获园豆:15
dudu | 园豆:37795 (高人七级) | 2013-07-04 14:22

1:这个是json2 中的解决方案,也看了的,里面用了多次替换,修改为C#版本的 还是有点挑战的。

if (/^[\],:{}\s]*$/.test(text.replace(/\\["\\\/bfnrtu]/g, '@').
replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']').
replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {

  //the json is ok

}else{

  //the json is not ok

}

2:Json.NET 的话需要知道实体数据结构。这个作为通用的来说,不是太好。

支持(0) 反对(0) 包拯 | 园豆:9 (初学一级) | 2013-07-04 14:54

@包拯: 用JObject.Parse()不需要知道实体数据结构

支持(0) 反对(0) dudu | 园豆:37795 (高人七级) | 2013-07-04 15:10

@dudu: 我看了上面链接的文档上使用到schemaJson  这个就是 他定义的数据结构吖。。。

支持(0) 反对(0) 包拯 | 园豆:9 (初学一级) | 2013-07-04 16:32
0

http://jsonlint.org/ 参考这个

收获园豆:5
Yu | 园豆:12950 (专家六级) | 2013-07-04 16:01
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册