python 如何判断一个字符串是不是 json 格式数据

2016-04-08 22:44:45 +08:00
 null0z
13200 次点击
所在节点    Python
15 条回复
wenyu1001
2016-04-08 23:10:09 +08:00
shuax
2016-04-08 23:26:44 +08:00
try 一下能不能 load 咯
toono
2016-04-09 00:12:58 +08:00
```python
import json

def is_json(myjson):
try:
json_object = json.loads(myjson)
except ValueError, e:
return False
return True
```
我只是搬运一下上面的 stack overflow 的答案。
如果使用 json.loads() 方法抛出 ValueError 的话即是解析错误。
toono
2016-04-09 00:13:47 +08:00
``` python
import json

def is_json(myjson):
try:
json_object = json.loads(myjson)
except ValueError, e:
return False
return True
```
我只是搬运一下上面的 stack overflow 的答案。
如果使用 json.loads() 方法抛出 ValueError 的话即是解析错误。
qqmishi
2016-04-09 01:29:26 +08:00
json.loads()解析一下就好了
SoloCompany
2016-04-09 02:19:03 +08:00
其实
如果你的目的不是准确的格式检查
而仅仅是希望数据格式自动适配
并且常用的数据类型都是 object 而不是 array
直接判断一下第一个字符是不是 { 就好了
如果希望自动适配 array 的话,就多判断一下第一个字符是不是 [ 呗
florije
2016-04-09 06:46:45 +08:00
json.loads('10086')
florije
2016-04-09 06:48:43 +08:00
json loads 之后不异常,看数据是 dict 或者 array 就可以了其实。
null0z
2016-04-09 08:02:25 +08:00
@wenyu1001 感谢, baidu , bing 都没有检索到。。被墙真难受,本来觉得 try 不优雅的,看来还是得 try ,感谢
pynix
2016-04-09 10:39:40 +08:00
感觉 xy problem
calease
2016-04-09 10:49:10 +08:00
@florije json 不止 dict 和 array 。
@null0z 如果很多地方要用的话可以用 contextlib.contextmanager wrap 一下。

@ contextmanager
def json_deserializer(my_str):
try:
yield json.loads(my_str)
except:
print "not valid json"

with json_deserializer(my_str) as my_json_object:
print "%s is deserialized into %s" % (my_str, my_json_object)
vob636
2016-04-09 17:02:46 +08:00
@calease 标准 json 需要 dict 包裹……,不标准的限制的 array 。
florije
2016-04-09 17:04:01 +08:00
@vob636 确实是有这说法,不过 @calease 说的是,只考虑简单问题了,不过话说 LZ 的情况也能解决了吧貌似。
calease
2016-04-09 21:12:24 +08:00
@vob636
@florije
没听说过这种说法。有出处吗?
RFC 上说 json 有 6 种 data types ,并且也没有指明任何哪种是 standard 的。
null0z
2016-04-09 21:39:18 +08:00
@calease 问题解决啦!很棒!感谢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/269686

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX