码迷,mamicode.com
首页 > 移动开发 > 详细

Android开发之json解析

时间:2015-06-18 23:52:40      阅读:251      评论:0      收藏:0      [点我收藏+]

标签:

目前正在尝试着写app,发现看懂代码和能写出来差距很大,最关键的是java基础比较的差,因为只会python,java基础只学习了一个礼拜就过了。感觉java写出来的代码不如python简单明了。

上面废话了。现在开发app肯定会涉及到与服务器的交互的,目前的首选是json。用到的解析json的包可以选择gson,fastjson等。

现在分析下把我难倒了好几天的一个bug,就是json的解析。

用到的API:http://fanyi.youdao.com/openapi.do?keyfrom=xxx&key=xxx&type=data&doctype=json&version=1.1&q=good

获得的json:

 1 {
 2     "translation": [
 3         "好"
 4     ],
 5     "basic": {
 6         "us-phonetic": "ɡ?d",
 7         "phonetic": "g?d",
 8         "uk-phonetic": "g?d",
 9         "explains": [
10             "n. 好处;善行;慷慨的行为",
11             "adj. 好的;优良的;愉快的;虔诚的",
12             "adv. 好",
13             "n. (Good)人名;(英)古德;(瑞典)戈德"
14         ]
15     },
16     "query": "good",
17     "errorCode": 0,
18     "web": [
19         {
20             "value": [
21                 "好",
22                 "商品",
23                 "良好"
24             ],
25             "key": "Good"
26         },
27         {
28             "value": [
29                 "耶稣受难节",
30                 "耶稣受难日",
31                 "受难节"
32             ],
33             "key": "Good Friday"
34         },
35         {
36             "value": [
37                 "苏GOOD",
38                 "妙极了",
39                 "秀丝曼"
40             ],
41             "key": "So Good"
42         }
43     ]
44 }

通过观察json发现,既有大括号,又有中括号。

贴上一段python解析json的代码:

 1 payload={keyfrom:flaskwechat,key:658077913,type:data,doctype:json,version:1.1,q:‘‘}
 2     payload[q]=content
 3     url=http://fanyi.youdao.com/openapi.do
 4     r=requests.get(url,params=payload)
 5     res=r.json()
 6     if res[errorCode]==20:
 7         return 要翻译的文本过长\n
 8     elif res[errorCode]==30:
 9         return 无法进行有效的翻译\n
10     elif res[errorCode]==40:
11         return 不支持的语言类型\n
12     elif res[errorCode]==60:
13         return 无词典结果\n
14     else:
15         inputKey=res[query]+\n
16         youdaoTranslation=u---有道翻译---+\n+res[translation][0]+\n
17         x=u---网络释义---+\n
18         if res.has_key(basic):
19             for i in res[basic].keys():
20                 if i==us-phonetic:
21                     youdaoWeb=x+u美式读法:+res[basic][i]+u(Sorry,只有音标,真的没有语言)+\n
22                 elif i==explains:
23                     for a in  res[basic][i]:
24                         youdaoWeb=x+\n+a+\n
res[‘translation‘][0]就可以获取到‘translation‘的值,简单明了。
但是在android里面,gson解析的时候,需要先对象,列表的分清楚。
需要先写实体类,然后遇到了{},这个是对象,遇到了[],这个是数组,逐步解析


Android开发之json解析

标签:

原文地址:http://www.cnblogs.com/liyiran/p/4587271.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!