【问题标题】:how to get image url from json string in android to display in image view如何从android中的json字符串获取图像url以显示在图像视图中
【发布时间】:2016-11-20 16:53:19
【问题描述】:

伙计们,这是我的 json 数据:

{
  "status": "ok",
  "post": {
    "id": 8,
    "type": "post",
    "slug": "android",
    "url": "http://192.168.1.8/Android/android/wordpress/2016/07/13/android/",
    "status": "publish",
    "title": "Android",
    "title_plain": "Android",
    "content": "<p>Google&#8217;s Android is shaking up the mobile market in a big way. With Android.</p>\n<p><img class=\"alignnone size-medium wp-image-31\" src=\"http://192.168.1.8/Android/android/wordpress/wp-content/uploads/2016/07/51KRggHZuzL._SX355_-300x222.jpg\" alt=\"51KRggHZuzL._SX355_\" width=\"300\" height=\"222\" srcset=\"http://192.168.1.8/Android/android/wordpress/wp-content/uploads/2016/07/51KRggHZuzL._SX355_-300x222.jpg 300w, http://192.168.1.8/Android/android/wordpress/wp-content/uploads/2016/07/51KRggHZuzL._SX355_.jpg 355w\" sizes=\"(max-width: 300px) 85vw, 300px\" /> <img class=\"alignnone size-medium wp-image-12\" src=\"http://192.168.1.8/Android/android/wordpress/wp-content/uploads/2016/07/CV2iAeMXIAAQlZH-300x232.png\" alt=\"moto\" width=\"300\" height=\"232\" srcset=\"http://192.168.1.8/Android/android/wordpress/wp-content/uploads/2016/07/CV2iAeMXIAAQlZH-300x232.png 300w, http://192.168.1.8/Android/android/wordpress/wp-content/uploads/2016/07/CV2iAeMXIAAQlZH.png 600w\" sizes=\"(max-width: 300px) 85vw, 300px\" /></p>\n",
    "excerpt": "<p>Google&#8217;s Android is shaking up the mobile market in a big way. With Android.  </p>\n",
    "date": "2016-07-13 06:12:00",
    "modified": "2016-07-18 07:12:39"
  }
}

在内容数据中我得到这样的字符串:

<p>Google&#8217;s Android is shaking up the mobile market in a big way. With Android.</p>\n<p><img class=\"alignnone size-medium wp-image-31\" src=\"http://192.168.1.8/Android/android/wordpress/wp-content/uploads/2016/07/51KRggHZuzL._SX355_-300x222.jpg\" alt=\"51KRggHZuzL._SX355_\" width=\"300\" height=\"222\" srcset=\"http://192.168.1.8/Android/android/wordpress/wp-content/uploads/2016/07/51KRggHZuzL._SX355_-300x222.jpg 300w, http://192.168.1.8/Android/android/wordpress/wp-content/uploads/2016/07/51KRggHZuzL._SX355_.jpg 355w\" sizes=\"(max-width: 300px) 85vw, 300px\" /> <img class=\"alignnone size-medium wp-image-12\" src=\"http://192.168.1.8/Android/android/wordpress/wp-content/uploads/2016/07/CV2iAeMXIAAQlZH-300x232.png\" alt=\"moto\" width=\"300\" height=\"232\" srcset=\"http://192.168.1.8/Android/android/wordpress/wp-content/uploads/2016/07/CV2iAeMXIAAQlZH-300x232.png 300w, http://192.168.1.8/Android/android/wordpress/wp-content/uploads/2016/07/CV2iAeMXIAAQlZH.png 600w\" sizes=\"(max-width: 300px) 85vw, 300px\" /></p>\n

那么,我如何从这个字符串中获取图像 url

【问题讨论】:

  • 真的是 JSON 吗?
  • 是String形式的Json
  • 这是 html,而不是 JSON。
  • 是html数据.....
  • 是的,它是一个 html。它来自我的 json 数据

标签: android json html android-layout


【解决方案1】:

您可以使用正则表达式来匹配来自img 标记的src 属性。

试试这个代码,

String mydata = "your html string";
String regex = "src\\s*=\\s*\"(.+?)\"";

Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(mydata);
List<String> imgUrls = new ArrayList<String>();
while (matcher.find()) {
    imgUrls.add(matcher.group(1));
}

//Load imgUrls into ImageViews using some image loader

对于图像加载器,您可以使用PicassoGlide

【讨论】:

  • 请不要将正则表达式用于 html stackoverflow.com/a/1732454/1483663
  • @RuslanBes 有没有任何外部依赖的替代方案?
  • 它适用于一个图像 url 但字符串包含两个图像 url 我将如何获得它
  • 感谢您的支持@K Neeraj Lal
【解决方案2】:
Try this::

Document doc = Jsoup.parse(html);
        Elements element = doc.getAllElements();
        for(Element e: element)
        {
            Elements str = e.getElementsByTag("img");
            for(Element el: str)
            {                
                String src= el.attr("src");
                System.out.println("The src:"+src);
            }
        }

【讨论】:

    【解决方案3】:
    URL[] urlsimage;
    Bitmap[] TBM;
    
    JSONArray jsonArray = new JSONArray(Response);
    
    urlsimage=new URL[jsonArray.length()];
    TBM=new Bitmap[jsonArray.length()];
    
    for(int i=0; i < jsonArray.length(); i++){
    JSONObject jsonObject = jsonArray.getJSONObject(i);
    
    Image[i]=jsonObject.getString("image");
      if(!Image[i].equals("null"))
      {
          urlsimage[i]=new URL(Image[i]);
          TBM[i] = BitmapFactory.decodeStream(urlsimage[i].openConnection().getInputStream());
      }
    }
    
    img.setImageBitmap(TBM[0]);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多