JAVA解析JSON数据

去这里下载json jar包:http://download.csdn.net/detail/lanxuezaipiao/5440983


处理时按行读取,其实每次读取的是一个完整的json对象,提取出对应的key-value值即可。注意需要把工程的编码格式改成utf-8。

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.text.ParseException;


import org.json.JSONException;
import org.json.JSONObject;


public class OrgJsonTest {
    public static void main(String[] args) throws JSONException, ParseException, IOException {
        // TODO Auto-generated method stub

    	File file = new File("F:\\news.txt");
	    file.createNewFile();
	    FileWriter fw = new FileWriter("F:\\news.txt");
	    BufferedWriter bw = new BufferedWriter(fw);
	    
		FileReader fr = new FileReader("F:\\news-2013-10-08.json");
		BufferedReader br = new BufferedReader(fr);
		
		String line = "";
		
		int count=0;
		
		while (line != null) {
			line = br.readLine();
			if (line == null) {
				break;
			}
			//System.out.println(line);
			JSONObject jsonobj = new JSONObject(line);  
		    String content = jsonobj.getString("content");
		
		    System.out.println("processing "+count+" news");
		    count++;
		    bw.write(content);
		    bw.newLine();
		    bw.flush();
		}
		bw.close();
		fw.close();
		br.close();
		fr.close();

    }

}


上面是对简单一点的JSON数据,针对负责一点的数据,例如下面这种:

{
  "count": 1,
  "token": "1385432216745",
  "status": "C00000",
  "data": [
    {
      "kw": [
        {
          "w": 2128.2966897788297,
          "k": "王宝强"
        },
        {
          "w": 738.7155436500158,
          "k": "微博"
        },
        {
          "w": 698.9209846135442,
          "k": "老婆"
        },
        {
          "w": 224.3018018595754,
          "k": "出行"
        },
        {
          "w": 16.773489047153625,
          "k": "丑男"
        }
      ],
      "g": [
        
      ],
      "cate": "",
      "location": "",
      "tag": "\u0000",
      "nid": "9e2e54b7b5d5b508-a5c9a837a0b56a60",
      "pic": [
        
      ],
      "ct": 1385360731000,
      "rank": -1,
      "co": "原标题:王宝强微博晒带两子出行照67盘点与丑男相爱的女神幸福不过如此67忙于工作的王宝强终于有时间带两个儿子出去玩河北新闻网讯(灵犀)一向行事低调的王宝强近日微博晒出带两子出行照,照片中的王宝强身穿白色羽绒服,包裹严实两手牵着两个儿子,哥哥比弟弟高了半头,虽然仅仅是背影,但从王宝强的字里行间能感受到心底洋溢的幸福喜悦:“幸福不过如此,我今天称职了!”傻人有傻福用在王宝强身上十分合适,相貌平平的王宝强曾经因为《天下无贼》一夜爆红,如今娶到美艳校花后连生两子,令人艳羡不已。王宝强校花妻子马蓉。据称,王宝强对马蓉是一见钟情,他们相遇于大学学生会做活动的时候。第一次见面,虽然王宝强已经对马蓉产生好感,但是没敢表白,只能把爱慕放在心里。后来,通过逐渐的接触,同样是不爱说话不喜欢张扬的低调性格,令两个年轻人的心开始拉近。王宝强善良、朴实、纯粹的性格令这位漂亮女孩颇有好感.沈傲君和老公。由于特殊身份的原因,沈傲君的老公一直保持神秘,正面照极少。但从侧面也不难看出,又是一位相貌平平的男士。潘长江和老婆杨云。当年潘长江利用同门学艺的机会,追到了高挑漂亮的杨云。可见,矮个子的迸发力更大。朴树和吴晓敏。朴树很有才但相貌不能说是帅。高晓松和80后老婆。据传此女是1988年生人,而他们的女儿也在2007年降临于世,现在也越长大越“萝莉”。雪村曾调侃自己是靠诙谐调侃的幽默风格把美女征服的雪村和老婆。赵亮和胡敬是一见钟情,别看赵亮这个人长得是不怎么对得起观众,但是他找了个1.80米模特老婆是非常对得起镜头。管虎梁静。疯疯癫癫的梁静嫁给了有些另类的管虎。但总觉得管虎有着十足的摇滚范。林青霞和老公邢李原。林青霞的美丽无法用语言来形容,以至于当她并肩与老公邢李原站在一起时,更显那男人“面目可憎”。但这样的男人,让40岁的林青霞果断地结束和秦汉20年的感情,甘心为他退休生子。黎姿2009年宣布息影之后嫁给富商马廷强。2010年7月通过人工受孕方式诞下双胞胎女儿,现今再怀孕,有望追生男孩。黎姿虽然已经年纪不小,但样貌看起来很年轻,马廷强的白发却令两人貌似父女。王祖蓝和李亚男。5尺3寸的王祖蓝成功“高攀”5尺9寸的“华姐”冠军李亚男。王祖蓝追求李亚男3年,09年赢得高妹芳心。不知李亚男在出行时会不会有心理负担呢。吴若甫和老婆。吴若甫的硬汉形象和好男人的气质战胜了平平的五官,让他受到广大女性的喜爱。陈美琪和老公。昔日伶俐可爱的“小青”已成人妇,可老公的长相却是差强人意。每个假期《新白娘子传奇》重播的时候,还都要感慨一番。刘涛的老公比她矮,发际线偏高,虽然五官端正,但算不上帅哥。白百何与羽凡胡静。与车晓一样,胡静也是女星嫁入豪门的典型代表,而外界也不断传出对两人幸福感的质疑。三级女星出身的邱淑贞结婚后,鲜少出现在公众面前了,但她老公却有被曝出过偷腥。温碧霞和老公。这男人,不仅脸大、眼小、鼻子大,五官也长的太集中了吧。被誉为“最美丽港姐”的朱玲玲,多年来屡与霍震霆传婚变,后来,她终肯承认与霍震霆已于两年前正式离婚,昔日童话式婚姻维持了26年结束。美女嫁丑男,会成为婚姻的导火索吗。蒋雯丽和顾长卫十五年细水长流的婚姻一直被圈内传为佳话。当年刚从北电毕业的蒋雯丽没有像大多数女明星那样,先成名再成家,而是马上嫁给了在《霸王别姬》一片中认识的顾长卫。黄小茂和老婆李静。黄小茂曾形容两人的爱情,有如彗星撞地球的感觉。看来,丑男追女也有绝招啊。徐帆与冯小刚,是“才子佳人”的代表。徐帆的“嫁鸡随鸡,嫁狗随狗”,更多表现在性格的影响上,她显得幽默开朗起来,而冯小刚也渐渐懂得享受琐碎平和的生活。被砍的导演鄢泼可谓是艳福不浅,因为她的第一任妻子和现在的女友都是校花。郑钧和校花老婆刘芸。貌不惊人的男星频频娶到美若天仙的校花,有没有羡慕嫉妒恨呢。徐锦江和他老婆。他老婆大酒窝,大眼睛,如果留头发会挺好看的。他俩的故事可真够传奇的。萍水相逢,一见钟情,结婚,生子,很传奇,一个内地的女军人,一个三级男星,就这样结合了。许戈辉与丁健。许戈辉的老公丁健长出60年代的范儿。尤小刚和邬倩倩。两人的幸福再次印证了一个道理:导演不需要帅,而且多半会娶漂亮的女演员。叶玉卿胡兆明。叶玉卿绝对是个聪明的女人,三级女星中,她或许是事业和婚姻很成功的一个了。成功上岸后,还嫁了富商老公,定居美国。有没有发现,三级女星虽然美艳至极,但嫁给帅气老公的却是不多,图个安稳。殷桃和男友,殷桃曾一度深陷被包养传闻中,好在她的男友及时曝光替她解了围。殷桃曾经透露过自己理想男友的标准是大智若愚型,对于男友的相貌她并没有太多要求。殷桃现在的男友也是一位富豪,而且是个中年男子,从外表看此男基本符合殷桃择偶的标准。但他同样是相貌平平,不过殷桃对男友貌似也没有什么过分的要求。毕竟帅不能当饭吃。声明:凡注明为其他媒体来源的信息,均为转载自其他媒体,转载并不代表本网赞同其观点,也不代表本网对其真实性负责。您若对该稿件内容有任何疑问或质疑,请即与东方网联系,本网将迅速给您回应并做处理。电话:021-60850000",
      "t": "王宝强微博晒带两子出行照 盘点与丑男相爱的女神",
      "oid": "",
      "su": "",
      "me": "",
      "ch": [
        -1
      ],
      "ds": "http://news.eastday.com/eastday/13news/node2/n4/n6/u7ai221474_K4.html"
    }
  ],
  "msg": "成功"
}

可以用下面代码进行处理:

首先是获取关键词的,在kw标签里面:

 JSONObject record = new JSONObject(lines);
        JSONArray dataarray =record.getJSONArray("data");
        JSONObject _dataarray =dataarray.getJSONObject(0);
        JSONArray __dataarray =_dataarray.getJSONArray("kw");


        
        for(int i=0 ; i < __dataarray.length() ;i++){
        	 JSONObject myjObject = __dataarray.getJSONObject(i);
        	 String weight = myjObject.get("w").toString();
        	 String keyword =myjObject.get("k").toString();
        	 temp+=keyword+":"+weight+",";
        }

然后是获取内容和标题的,在co和t里面:

 JSONObject record = new JSONObject(lines);
        JSONArray dataarray =record.getJSONArray("data");
        JSONObject _dataarray =dataarray.getJSONObject(0);
        String content =_dataarray.get("co").toString();
        String title =_dataarray.get("t").toString();

        temp=title+" "+content;

如果要从网页中获取JSON数据可以用Get_request,全部代码如下:

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
 
public class post_request {
	public static final String GET_URL = "http://10.13.80.142:8080/detail?nid=";	
	public static final String Back="&body=1";
 
    public static String readContentFromGet(String docid) throws IOException, JSONException{
        String getURL = GET_URL + docid + Back;
        
        URL getUrl = new URL(getURL);
        HttpURLConnection connection = (HttpURLConnection) getUrl.openConnection();
        connection.connect();
        BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),"utf-8"));
        String lines=reader.readLine();
       
        String temp="";
        
        JSONObject record = new JSONObject(lines);
        JSONArray dataarray =record.getJSONArray("data");
        JSONObject _dataarray =dataarray.getJSONObject(0);
        JSONArray __dataarray =_dataarray.getJSONArray("kw");


        
        for(int i=0 ; i < __dataarray.length() ;i++){
        	 JSONObject myjObject = __dataarray.getJSONObject(i);
        	 String weight = myjObject.get("w").toString();
        	 String keyword =myjObject.get("k").toString();
        	 temp+=keyword+":"+weight+",";
        }
        System.out.println(temp);
        reader.close();
        return temp;
    }
    

	public static void Getid() throws IOException, JSONException{
		FileReader fr = new FileReader("D:\\1111\\cmsid_docid");
		BufferedReader br = new BufferedReader(fr);
		String line = "";
		String[] outline=new String[3];
		
		File file = new File("D:\\1111\\newskeyword.txt");
	    file.createNewFile();
	    FileWriter fw = new FileWriter("D:\\1111\\newskeyword.txt");
	    BufferedWriter bw = new BufferedWriter(fw); 
		    
		while((line=br.readLine())!=null){
			outline=line.split(",");
			String temp=outline[1].toString();
			String keyword=readContentFromGet(temp);
			bw.write(temp+","+keyword);
			bw.newLine();
			bw.flush();
			
		}
		fr.close();
		br.close();
		bw.close();
		fw.close();
		
	}
	
	public static void main(String[] args) throws IOException, JSONException {
		Getid();
	}
}


你可能感兴趣的:(Felven在职场)