Android開發之json解析

來源:互聯網
上載者:User

標籤:

目前正在嘗試著寫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解析

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.