android之json解析优化,Android开发之json解析

博主分享了在Android开发中遇到的JSON解析问题,指出相较于Python的简洁,使用Gson在Android进行JSON解析更为复杂,需要明确区分对象和数组,并创建对应的实体类。文章通过一个具体的翻译API例子,展示了如何在Python中解析JSON,同时提到了Android中类似操作的繁琐。此外,还提及了Android开发中涉及的其他技术,如服务、布局文件和Toast的使用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目前正在尝试着写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:

{

"translation": [

"好"

],

"basic": {

"us-phonetic": "ɡʊd",

"phonetic": "gʊd",

"uk-phonetic": "gʊd",

"explains": [

"n. 好处;善行;慷慨的行为",

"adj. 好的;优良的;愉快的;虔诚的",

"adv. 好",

"n. (Good)人名;(英)古德;(瑞典)戈德"

]

},

"query": "good",

"errorCode": 0,

"web": [

{

"value": [

"好",

"商品",

"良好"

],

"key": "Good"

},

{

"value": [

"耶稣受难节",

"耶稣受难日",

"受难节"

],

"key": "Good Friday"

},

{

"value": [

"苏GOOD",

"妙极了",

"秀丝曼"

],

"key": "So Good"

}

]

}

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

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

payload={'keyfrom':'flaskwechat','key':'','type':'data','doctype':'json','version':'1.1','q':''}

payload['q']=content

url='http://fanyi.youdao.com/openapi.do'

r=requests.get(url,params=payload)

res=r.json()

if res['errorCode']==20:

return '要翻译的文本过长\n'

elif res['errorCode']==30:

return '无法进行有效的翻译\n'

elif res['errorCode']==40:

return '不支持的语言类型\n'

elif res['errorCode']==60:

return '无词典结果\n'

else:

inputKey=res['query']+'\n'

youdaoTranslation=u'---有道翻译---'+'\n'+res['translation'][0]+'\n'

x=u'---网络释义---'+'\n'

if res.has_key('basic'):

for i in res['basic'].keys():

if i=='us-phonetic':

youdaoWeb=x+u'美式读法:'+res['basic'][i]+u'(Sorry,只有音标,真的没有语言)'+'\n'

elif i=='explains':

for a in res['basic'][i]:

youdaoWeb=x+'\n'+a+'\n'

res['translation'][0]就可以获取到'translation'的值,简单明了。

但是在android里面,gson解析的时候,需要先对象,列表的分清楚。

需要先写实体类,然后遇到了{},这个是对象,遇到了[],这个是数组,逐步解析

实体类需要与json的数据对应上。

遇到{},就对应类的实例;遇到[],就使用list;然后逐步的把数据解析出来。

iOS开发之JSON解析

JSON解析步骤: - (NSArray *)products { if (_products == nil) { //第一步:获取JSON文件的路径: NSString *path = [[NSBu ...

安卓开发之json解析

1.从网页获取json返回字符串 public class ReadNet extends AsyncTask { @Override      ...

Android开发之Toast解析

Toast是Android系统提供的一个显示消息提示的类,它的使用非常简单,用途很广,如软件的升级,可以用它进行提示:退出程序时,也可以用它进行提醒,输入限制的提醒,等等. 使用场景: 1.需要提示用 ...

Android开发之JNI(一)--HelloWorld及遇到的错误解析

Android开发之JNI(一)--HelloWorld及遇到的错误解析 1.NDK环境搭建    參考http://blog.youkuaiyun.com/xiaoliouc/article/details/8 ...

Android开发之旅: Intents和Intent Filters(理论部分)

引言 大部分移动设备平台上的应用程序都运行在他们自己的沙盒中.他们彼此之间互相隔离,并且严格限制应用程序与硬件和原始组件之间的交互. 我们知道交流是多么的重要,作为一个孤岛没有交流的东西,一定毫无意义 ...

[置顶] Android开发之MediaPlayerService服务详解(一)

前面一节我们分析了Binder通信相关的两个重要类:ProcessState 和 IPCThreadState.ProcessState负责打开Binder 驱动,每个进程只有一个.而 IPCThre ...

Android 开发之旅:深入分析布局文件&又是“Hello World!”

http://www.cnblogs.com/skynet/archive/2010/05/20/1740277.html 引言 上篇可以说是一个分水岭,它标志着我们从Android应用程序理论进入实 ...

[置顶] Android开发之serviceManager分析

Android 开发之serviceManager分析 在Android系统中用到最多的通信机制就是Binder,Binder主要由Client.Server.ServiceManager和Binde ...

Android开发之TextView高级应用

Android开发之TextView高级应用 我们平时使用TextView往往让它作为一个显示文字的容器,但TextView的功能并不局限于此.以下就和大家分享一下TextView的一些使用技巧. A ...

随机推荐

Canvas绘制时钟

①首先在HTML的body标签中添加一个canvas标签,用于绘制时钟.

sql server2008 字符串的替换

DECLARE @TSql VARCHAR(MAX) SET @TSql =REPLACE(@TSql,'#PrimaryKey','0'); 1,@TSql将要替换的完整字符串 2,#Primary ...

Python:字典

#!/usr/bin/python3 #dict 字典 #字典是可变的 dict1 = {"name":"张三","age":22} pri ...

scapyd部署出现的问题的解决方案

使用scrapyd-deploy部署时,发现spiders为0的排查,首先用 scrapy list 看一下是否可以识别 windows下 scrapyd-deploy无后缀文件不能启动: 解决方案一 ...

Android为TV端助力 关于线程的那些事

今天发现之前自己一直有个误区,new Runnable(run()方法){}原来它不是一定创建一个线程 如果用主线程的handler去post(Runnable),他就不会创建子线程,而是在主线程上执 ...

LICEcap 和 FS Capture入门教程

上一篇介绍了如何使用 Visio 图形图表工具,文中贴了一张gif图,留言的小伙伴们迫不及待想知道如何录制 GIF 图,强哥姑且卖弄一次,把 PC 端截图工具和教程分享给大家,分别为 LICEcap ...

css3全屏背景显示

background:url(zhongyi2.png) no-repeat center center fixed;/* -webkit-background-size:cover; -moz-ba ...

vue如何将单页面改造成多页面应用

问题描述: 手头有一个项目是使用 vue-cli 搭建的单页面应用.项目分为了管理平台和用户查看页面,用户查看页面是很简单的页面,但是在加载过程中,却加载了整个应用的打包代码,量重且影响了响应和体验. ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值