`
jilong-liang
  • 浏览: 481493 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

使用fastjson解析json抓取新浪新闻文章

    博客分类:
  • Json
阅读更多

首先看看2个简单的fastjson的使用

例子一

package ivyy.taobao.com.domain.json;

import java.util.Iterator;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;


/**
 * @Author:jilongliang
 * @Date:2014-12-19
 * @Version:1.0
 * @Description:
 */
public class JsonTest1 {
	public static void main(String[] args) {
		 
		//[{"age":22,"sex":"男","userName":"xiaoliang"},{"age":22,"sex":"男","userName":"xiaoliang"}]
		StringBuffer buff=new StringBuffer();
		
		buff.append("[");
			buff.append("{");
				buff.append("'age'").append(":").append("22").append(",");
				buff.append("'sex'").append(":").append("'男'").append(",");
				buff.append("'userName'").append(":").append("'周伯通'").append("");
			buff.append("}");
			buff.append(",");//第一个数组结尾
			buff.append("{");
				buff.append("'age'").append(":").append("22").append(",");
				buff.append("'sex'").append(":").append("'男'").append(",");
				buff.append("'userName'").append(":").append("'令狐冲'").append("");
			buff.append("}");
		buff.append("]");
		
		String  jsonStr=buff.toString();
		
		
		JSONArray jarr=JSONArray.parseArray(jsonStr);//JSON.parseArray(jsonStr);
		for (Iterator iterator = jarr.iterator(); iterator.hasNext();) {
			JSONObject job=(JSONObject)iterator.next();
			String age=job.get("age").toString();
			System.out.println(age);
		}
		
		
	}
}

 例子二

package ivyy.taobao.com.domain.json;

import ivyy.taobao.com.entity.Classz;
import ivyy.taobao.com.entity.Student;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;


/**
 * @Author:jilongliang
 * @Date:2014-12-19
 * @Version:1.0
 * @Description:
 */
public class JsonTest2 {
	public static void main(String[] args) { 
		
		Student stu1=new Student();
		stu1.setAge(22);
		stu1.setUserName("xiaoliang");
		stu1.setSex("男");
		
		Classz claz1=new Classz();
		claz1.getStudents().add(stu1);
		
		String jsonStr=JSON.toJSONString(claz1);
		
		JSONObject jsonObj=new JSONObject();
		
		Object obj=jsonObj.parse(jsonStr);
		
		System.out.println(obj);
		
		
		Classz clz=JSON.parseObject(jsonStr, Classz.class);
		
		Student st=clz.getStudents().get(0);
		System.out.println(st.getSex());
		
		
		
	}
}

 1和2的实体

package ivyy.taobao.com.entity;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

/**
 *@Author:liangjl
 *@Date:2014-12-19
 *@Version:1.0
 *@Description:
 */
public class Classz implements Serializable{

	private List<Student> students=new ArrayList<Student>();

	public List<Student> getStudents() {
		return students;
	}

	public void setStudents(List<Student> students) {
		this.students = students;
	}
}

 

package ivyy.taobao.com.entity;

import java.io.Serializable;

/**
 *@Author:liangjl
 *@Date:2014-12-19
 *@Version:1.0
 *@Description:
 */
public class Student implements Serializable{
	private Integer age;
	private String sex;
	private String userName;
	
	public Integer getAge() {
		return age;
	}
	public void setAge(Integer age) {
		this.age = age;
	}
	public String getSex() {
		return sex;
	}
	public void setSex(String sex) {
		this.sex = sex;
	}
	public String getUserName() {
		return userName;
	}
	public void setUserName(String userName) {
		this.userName = userName;
	}
}

 

例子三、

package ivyy.taobao.com.domain.json;

import ivyy.taobao.com.utils.GlobalConstants;
import ivyy.taobao.com.utils.HttpRequestUtils;

import java.util.Iterator;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;

/**
 *@Author:liangjilong
 *@Date:2015-1-4
 *@Email:jilongliang@sina.com
 *@Version:1.0
 *@Description这个是通过fastjson处理的
 */
public class SinaNew {
	
	
	public static void main(String[] args) throws Exception {

		String requestURL = GlobalConstants.getUrl(2, "json");

		String jsonText = HttpRequestUtils.HttpURLConnRequest(requestURL, "GET");
		//System.out.println(jsonText);
		
		// 处理页面的json数据
		int start = jsonText.indexOf("(") + 1;
		jsonText = jsonText.substring(start, jsonText.lastIndexOf(")"));

		String result = "";
		JSONObject jsonObject = JSONObject.parseObject(jsonText);
		result = jsonObject.get("result").toString();
		
		JSONObject resObj = JSONObject.parseObject(result);
		// String encoding=resObj.get("encoding").toString();//获取到编码

		String dataStr = resObj.get("data").toString();

		JSONArray dataArr = JSONArray.parseArray(dataStr);
		String title = "", url = "", keywords = "", img = "", media_name = "";
		int i=0;
		 
		for (Iterator iterator = dataArr.iterator(); iterator.hasNext();) {
			JSONObject object = (JSONObject) iterator.next();

			title = object.get("title").toString();// title
			url = object.get("url").toString();// url
			keywords = object.get("keywords").toString();// keywords
			img = object.get("img").toString();// img
			media_name = object.get("media_name").toString();// media_name

			
			String newsText=GlobalConstants.getNewsContent(url);//处理新闻内容
			
			//System.out.println("==================第"+i+"篇=================="+newsText);
	    	i++;
	    	
			System.out.println(title + "\n" + url + "\n" + keywords + "\n"+ url + "\n" + media_name);

		}
	}
}

 

package ivyy.taobao.com.utils;

import java.net.URL;

import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

/**
 *@Author:liangjilong
 *@Date:2015-1-4
 *@Email:jilongliang@sina.com
 *@Version:1.0
 *@Description
 */
public class GlobalConstants {
	
	/***
	 * 获取url连接
	 * @param page第几页
	 * @param format格式(XML、JSON)
	 * @return
	 */
	public static String getUrl(Integer page,String format){
		StringBuffer buffer=new StringBuffer("http://api.roll.news.sina.com.cn/zt_list?channel=news");
		String url="";
		buffer.append("&cat_1=shxw");//显示新闻
		buffer.append("&cat_2==zqsk||=qwys||=shwx||=fz-shyf");
		buffer.append("&level==1||=2");//级别
		buffer.append("&show_ext=1");
		buffer.append("&show_all=1");//显示所有
		buffer.append("&show_num=22");//显示多少条
		buffer.append("&tag=1");
		buffer.append("&format="+format);
		buffer.append("&page="+page);
		buffer.append("&callback=newsloader");
		url=buffer.toString();
		return url;
	}
	
	
	/***
	 * 获取文章的内容
	 * 从新浪的网页分析,通过文章body的id就可以拿到相应的文章内容..
	 * @param url
	 * @return
	 */
	public static String getNewsContent(String url) throws Exception{
		Document doc=Jsoup.parse(new URL(url), 3000);
		if(doc!=null){
			String artibody=doc.getElementById("artibody").html();//通过网页的html的id去拿到新闻内容artibody
			return artibody;
		}else{
			return "网络异常";
		}
	}
}

 源代码:http://download.csdn.net/detail/jilongliang/8324543

package ivyy.taobao.com.utils;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

/**
 *@Author:liangjilong
 *@Date:2015-1-4
 *@Email:jilongliang@sina.com
 *@Version:1.0
 *@Description
 */

public class HttpRequestUtils {
	/**
	 * 发送http请求
	 * POST和GET请求都可以
	 * @param requestUrl 请求地址
	 * @param method传入的执行的方式 是GET还是POST方式
	 * @return String
	 */
	public static String HttpURLConnRequest(String requestUrl,String method) {
		StringBuffer buffer = new StringBuffer();
		try {
			URL url = new URL(requestUrl);
			HttpURLConnection httpUrlConn = (HttpURLConnection) url.openConnection();
			httpUrlConn.setDoInput(true);
			httpUrlConn.setRequestMethod(method);
			httpUrlConn.setUseCaches(false);  
			httpUrlConn.setInstanceFollowRedirects(true); //重定向
			httpUrlConn.connect();
			// 将返回的输入流转换成字符串
			InputStream inputStream = httpUrlConn.getInputStream();
			InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
			BufferedReader bufferedReader = new BufferedReader(inputStreamReader);

			String str = null;
			while ((str = bufferedReader.readLine()) != null) {
				buffer.append(str);
			}
			bufferedReader.close();
			inputStreamReader.close();
			// 释放资源
			inputStream.close();
			inputStream = null;
			httpUrlConn.disconnect();

		} catch (Exception e) {
			e.printStackTrace();
		}
		return buffer.toString();
	}
}

 

 

 源代码:
http://download.csdn.net/detail/jilongliang/8328255

  • 大小: 160.4 KB
  • 大小: 166.9 KB
0
1
分享到:
评论

相关推荐

    fastjson解析json的jar

    Fastjson是阿里巴巴推出的一款Java语言编写的高性能功能完备的JSON库,以其解析速度快、使用简便的特点,在Java开发领域备受青睐。本篇文章将深入探讨Fastjson的原理与使用方法,帮助开发者更好地理解和运用这一强大...

    java FASTJSON 解析复杂JSON实例源码

    在这个实例中,我们将深入探讨如何使用Fastjson来解析复杂的JSON数据,并通过`JSONTest`这个示例代码来加深理解。 首先,让我们了解什么是JSON。JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,...

    fastjson 快速解析json

    fastjson 快速解析json json、List互转

    fastjson解析json.rar

    这个压缩包“fastjson解析json.rar”显然包含了使用Fastjson进行JSON解析的相关资源,包括fastjson的库文件、示例代码以及可能的数据模型类。下面将详细介绍Fastjson的使用方法以及压缩包中的关键文件。 首先,`...

    SpringBoot中使用FastJson解析Json数据示例代码

    本示例将探讨如何在Spring Boot项目中集成并使用FastJson来解析JSON数据。 首先,我们需要在项目的`pom.xml`文件中添加FastJson的依赖。Spring Boot本身并未内置FastJson,所以需要手动引入: ```xml &lt;groupId&gt;...

    FastJson解析Json数据源码-旧版

    在Java开发中,FastJson是阿里巴巴提供的一款性能极佳的JSON库,它广泛应用于数据解析与序列化。本文将深入探讨FastJson解析Json数据的源码,帮助开发者理解其内部工作机制,提升对JSON处理的效率。 FastJson的核心...

    fastjson,方便json转换

    实现json转换,fastjson json json转换,可以帮助开发中涉及json格式处理的程序猿。

    Volley。fastJson解析网络Json ,多线程显示图片,简单缓存图片,万能适配器,完美解决图片排序混乱问题,完美解决图片多次加载问题

    首先,我们要讨论的是如何使用Volley和FastJson进行网络Json解析。Volley提供了RequestQueue来管理网络请求,你可以通过NetworkDispatcher线程池处理这些请求。当接收到JSON响应时,可以使用FastJson来解析。...

    Json_Gson_FastJson解析

    在Java世界中,有多种库可以帮助我们解析和生成JSON,其中最常用的包括org.json、Google的Gson以及阿里巴巴的FastJson。下面我们将详细探讨这三种JSON解析库的使用方法。 1. **org.json**: org.json是一个开源的...

    Android中FastJson解析json

    1. **JSON字符串到Java对象的转换**:FastJson提供了一种简单的方式来将JSON字符串解析成Java对象,例如: ```java String jsonString = "{\"name\":\"John\", \"age\":30}"; Person person = JSON.parseObject...

    Gson和fastJson解析json

    本篇文章将深入探讨这两个库的使用方法、特点以及在解析JSON时的差异。 **Gson** Gson是由Google开发的Java库,它提供了简单的API来处理JSON数据。Gson的优势在于其强大的类型映射能力,可以自动将Java对象转换为...

    Java fastjson解析json字符串实现过程解析

    在开始解析JSON字符串之前,首先需要将Fastjson的依赖添加到项目中。如果你使用的是Maven,可以在pom.xml文件中添加以下依赖: ```xml &lt;groupId&gt;com.alibaba&lt;/groupId&gt; &lt;artifactId&gt;fastjson &lt;version&gt;1.2.67 ...

    封装 fastjson 的json格式化工具

    在实际开发中,我们经常需要将JSON字符串进行格式化,以便于查看和调试,本文将详细介绍如何使用Fastjson封装一个JSON格式化工具。 首先,我们需要引入Fastjson的依赖。如果你使用的是Maven,可以在pom.xml文件中...

    fastjson解析json

    在提供的`FastjsonDemo`压缩包文件中,可能包含了一个简单的示例程序,演示了如何使用Fastjson进行JSON的解析和生成。通常,这个示例会创建一个Java对象,然后将其转换为JSON字符串,接着将JSON字符串解析回Java对象...

    fastjson包解析json数据

    阿里巴巴 fastjson是目前解析json数据的一种比较高效,快速的方式。

    通过fastjson解析json数据工具

    二、通过fastjson解析json数据 一、原始数据内容eventLogJson.txt { “u”: { “cookieid”: “HsOorABPB”, “account”: “05289”, “email”: “Fh8h@G4hbi.com”, “phoneNbr”: “20096655112”, “birthday”...

    fastjson Json解析

    在本文中,我们将深入探讨Fastjson的核心功能、特性以及如何在实际开发中使用它进行JSON解析。 **1. Fastjson的核心功能** - **JSON解析与生成**:Fastjson可以将JSON字符串解析为Java对象,反之亦然。它支持基本...

    安卓网站交互JSONxmlWebserviceUPnP相关-使用fastjson解析实体嵌套只要一行代码就可以解析负责的json嵌套.zip

    【标题】中的“安卓网站交互JSONxmlWebserviceUPnP相关-使用fastjson解析实体嵌套只要一行代码就可以解析负责的json嵌套”涉及到几个关键概念,让我们逐一详解: 1. **JSON**: JSON(JavaScript Object Notation)...

    FastJson Json解析利器

    FastJson是阿里巴巴开发的一款高效的Java JSON库,它不仅性能优秀,而且使用简单,深受开发者喜爱。在Java开发中,JSON(JavaScript Object Notation)作为数据交换格式被广泛应用,FastJson的出现极大地简化了JSON...

    com.alibaba.fastjson.JSON , net.sf.json.JSONObject

    Fastjson是阿里巴巴开源的一个高性能的JSON库,它的设计目标是处理速度极快,同时也提供了丰富的API供开发者使用。Fastjson支持Java对象与JSON之间的相互转换,包括JSON字符串到Java对象的反序列化以及Java对象到...

Global site tag (gtag.js) - Google Analytics