Android 图文数据JSON解析,金山词霸每日一句API的调用

数据格式为

?


1

2

3

4

5

6

7

8

9

10

11

{sid:737,

tts:http://news.iciba.com/admin/tts/2013-12-11.mp3,

content:I don‘t want us to be together because we have to,I want us to be together because we want to.,

note:我不希望我们因为“不得不”而在一起,我希望我们是因为想在一起而在一起。,

translation:感谢@程很多要秒虐数学 投稿。词霸小编,这句话来自《冰河世纪2》,是一个系列的动画电影,非常搞笑,你看过吗?,

picture:http://cdn.iciba.com/news/word/2013-12-11.jpg,picture2:http://cdn.iciba.com/news/word/big_2013-12-11b.jpg,caption:词霸每日一句,

dateline:2013-12-11,

s_pv:8693,

sp_pv:2090,

tags:[{id:9,name:爱情},{id:14,name:电影经典}],

fenxiang_img:http://cdn.iciba.com/web/news/longweibo/imag/2013-12-11.jpg}

JSON字段解释

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

JSON 字段解释

{

‘sid‘:‘‘ #每日一句ID

‘tts‘: ‘‘ #音频地址

‘content‘:‘‘ #英文内容

‘note‘: ‘‘ #中文内容

‘translation‘:‘‘ #词霸小编

‘picture‘: ‘‘ #图片地址

‘picture2‘: ‘‘ #大图片地址

‘caption‘:‘‘ #标题

‘dateline‘:‘‘ #时间

‘s_pv‘:‘‘ #浏览数

‘sp_pv‘:‘‘ #语音评测浏览数

‘tags‘:‘‘ #相关标签

‘fenxiang_img‘:‘‘ #合成图片,建议分享微博用的

}

最终实现的效果

具体实现,使用AsynTask异步访问网络:

?


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

class Load extends AsyncTask<string, string="">

    {

        public String url = http://open.iciba.com/dsapi/;

        ProgressDialog pdlg;

        String jsonstr = ;

        JSONObject json = null;

        @Override

        protected String doInBackground(String... params) {

            // TODO Auto-generated method stub

            try{

                DefaultHttpClient httpClient = new DefaultHttpClient();

                HttpPost httppost = new HttpPost(url);

                HttpResponse httpResponse = httpClient.execute(httppost);

                HttpEntity httpEntity = httpResponse.getEntity();

                InputStream is = httpEntity.getContent();

                BufferedReader reader = new BufferedReader(new InputStreamReader(is, UTF-8));

                StringBuilder sb = new StringBuilder();

                String line = null;

                while ((line = reader.readLine()) != null)

                {

                    sb.append(line +

);

                }

                is.close();

                jsonstr = sb.toString();

                json = new JSONObject(jsonstr.toString());

                engstr = json.getString(content);

                chistr = json.getString(note);

                imagurl = json.getString(picture);

                timestr =    json.getString(dateline);

                fromstr   =  json.getString(translation);

                JSONArray array = json.getJSONArray(tags);

                for(int i=0;i<p>使用了一个图片处理的工具类,ImageLoader,主要用来通过url解析图片,处理图片的大小,以文件的形式缓存图片。</p><pre class="brush:java;">public class ImageLoader {

    

    MemoryCache memoryCache=new MemoryCache();

    FileCache fileCache;

    private Map<imageview, string=""> imageViews=Collections.synchronizedMap(new WeakHashMap<imageview, string="">());

    ExecutorService executorService;

    

    public ImageLoader(Context context){

        fileCache=new FileCache(context);

        executorService=Executors.newFixedThreadPool(5);

    }

    

    final int stub_id = R.drawable.drug_trans;

    public void DisplayImage(String url, ImageView imageView)

    {

        imageViews.put(imageView, url);

        Bitmap bitmap=memoryCache.get(url);

        if(bitmap!=null)

            imageView.setImageBitmap(bitmap);

        else

        {

            queuePhoto(url, imageView);

            imageView.setImageResource(stub_id);

        }

    }

        

    private void queuePhoto(String url, ImageView imageView)

    {

        PhotoToLoad p=new PhotoToLoad(url, imageView);

        executorService.submit(new PhotosLoader(p));

    }

    

    private Bitmap getBitmap(String url)

    {

        File f=fileCache.getFile(url);

        

        //from SD cache

        Bitmap b = decodeFile(f);

        if(b!=null)

            return b;

        

        //from web

        try {

            Bitmap bitmap=null;

            URL imageUrl = new URL(url);

            HttpURLConnection conn = (HttpURLConnection)imageUrl.openConnection();

            conn.setConnectTimeout(30000);

            conn.setReadTimeout(30000);

            conn.setInstanceFollowRedirects(true);

            InputStream is=conn.getInputStream();

            OutputStream os = new FileOutputStream(f);

            Utils.CopyStream(is, os);

            os.close();

            bitmap = decodeFile(f);

            return bitmap;

        } catch (Exception ex){

           ex.printStackTrace();

           return null;

        }

    }

    //decodes image and scales it to reduce memory consumption

    private Bitmap decodeFile(File f){

        try {

            //decode image size

            BitmapFactory.Options o = new BitmapFactory.Options();

            o.inJustDecodeBounds = true;

            BitmapFactory.decodeStream(new FileInputStream(f),null,o);

            

            //Find the correct scale value. It should be the power of 2.

            final int REQUIRED_SIZE=70;

            int width_tmp=o.outWidth, height_tmp=o.outHeight;

            int scale=1;

            while(true){

                if(width_tmp/1.5<required_size a="(Activity)photoToLoad.imageView.getContext();" activity="" bd="new" bitmap="b;photoToLoad=p;}" bitmapdisplayer="" bitmapfactory.options="" bmp="getBitmap(photoToLoad.url);" boolean="" catch="" decode="" display="" else="" filenotfoundexception="" for="" height_tmp="" imageview="" implements="" in="" insamplesize="" new="" o2="new" o2.insamplesize="scale;" override="" photosloader="" phototoload="" pre="" private="" public="" queue="" return="" runnable="" string="" tag="=null" task="" the="" this.phototoload="photoToLoad;" thread="" to="" ui="" url="u;" used="" void="" width_tmp="" with=""><p> </p><p> </p></required_size></imageview,></imageview,></pre>

</array.length();i&#43;&#43;)></string,>

推推族,免费得门票,游景区:www.tuituizu.com

结伴旅游,一个免费的交友网站:www.jieberu.com

时间: 2024-12-15 07:15:33

Android 图文数据JSON解析,金山词霸每日一句API的调用的相关文章

[转载]Android版本更新与JSON解析

/*  *注意,这篇文章转载自:  *http://blog.csdn.net/xjanker2/article/details/6303937  *一切权利归作者所有,这里只是转载,曾经用到过这篇文章里的方法.复制过来格式混乱,建议去原作者那里获得更好体验.  *我在百度知道的提问  */ 我们看到很多Android应用都具有自动更新功能,用户一键就可以完成软件的升级更新.得益于Android系统的软件包管理和安装机制,这一功能实现起来相当简单,下面我们就来实践一下.首先给出界面效果: 1.

Python爬取金山词霸每日一句,存储到MySQL中

#!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : 2018/7/3 20:25 # @Author : baoshan # @Site : # @File : iciba.py.py # @Software: PyCharm Community Edition # 爬取金山词霸每日一句放到数据库中存储 import json import requests import pymysql host = '10.10.1.10' port

Android开发之json解析

目前正在尝试着写app,发现看懂代码和能写出来差距很大,最关键的是java基础比较的差,因为只会python,java基础只学习了一个礼拜就过了.感觉java写出来的代码不如python简单明了. 上面废话了.现在开发app肯定会涉及到与服务器的交互的,目前的首选是json.用到的解析json的包可以选择gson,fastjson等. 现在分析下把我难倒了好几天的一个bug,就是json的解析. 用到的API:http://fanyi.youdao.com/openapi.do?keyfrom=

金山词霸 每日一句

应用案例: http://bookfuns.com/tools/daily/ 官方API: http://open.iciba.com/dsapi/ 返回json: { "sid": "1287", "tts": "http://news.iciba.com/admin/tts/2015-05-12.mp3", "content": "We're here to put a dent in the

Android 中的Json解析工具fastjson 、序列化、反序列化

Android中通常需要访问服务器,然而服务器返回的数据很多时候都是Json格式 1.fastjson简介 阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:    速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser.包括自称最快的JackJson: 功能强大,完全支持JavaBean.集合.Map.日期.Enum,支持范型,支持自省:无依赖,能够直接运行在Java SE 5.0以上版本:支持And

第二天 每日一句

谢谢大家的厚爱.今天是第二天了,第二个小项目,比第一个要复杂一点点.今天的项目呢是要做一个英语学习小软件,就是英语每日一句.由于是小项目,就不用那么复杂,没有自己去做服务器(自己做也可以,这样最好,可以扩展出很多项目.比如,糗事百科,知乎,或再大点的,美团,淘宝等.可是大项目是要团队做的).在21世纪,作为一名程序员,不应该推崇单兵做战,之前倒是有很多大神,比如求伯君和WPS,但现在的系统都比较庞大,并且用户需求多元化,并且要求开发周期足够短,所以必须要团队合作.闲话少说,既然没有服务器,那资源

微信,爬取每日一句,发送至多人,多个群

Timer(5, send_news) 每日一句,发送至多人,多个群 1 # -*- coding: utf-8 -*- 2 #from __future__ import unicode_literals 3 from threading import Timer 4 from wxpy import * 5 import requests 6 bot = None 7 def get_news1(): 8 #获取金山词霸每日一句,英文和翻译 9 url = "http://open.icib

Android Json数据的解析+ListView图文混排+缓存算法Lrucache 仿知乎

前几天心血来潮,打算根据看知乎的API自己做一个小知乎,定制的过程遇到ListView的优化问题及图片未缓存重加载等等许多问题,解决了以后打算和博友分享一下. 接口数据:http://api.kanzhihu.com/getpostanswers/20150925/archive 首先,Json数据太常用,相信每一位开发者Json的解析都是必备的.我们要准备以下知识: JavaBean,枚举你需要的元素,用来存储数据. 异步加载网络内容的必备途径,多线程加载+AsyncTask两种方式. Jso

android通过httpClient请求获取JSON数据并且解析

android通过httpClient请求获取JSON数据并且解析:http://www.cnblogs.com/gzggyy/archive/2013/05/08/3066288.html Android--使用Http向服务器发送请求并取得返回结果,下载图片:http://www.2cto.com/kf/201307/229489.html Android系列之网络(一)----使用HttpClient发送HTTP请求(通过get方法获取数据):http://blog.csdn.net/he