java json解析jar包_java编译运行引用外部jar包读取json文件

//HanPengNewAndOldServerGoodsTypeSpendCoin.java

//

import java.util.HashMap;

import java.util.Date;

import java.util.Calendar;

import java.util.ArrayList;

import java.util.Iterator;

import java.text.SimpleDateFormat;

import java.io.FileReader;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileOutputStream;

import net.sf.json.JSONArray;

import net.sf.json.JSONObject;//使用jason文件

public class HanPengNewAndOldServerGoodsTypeSpendCoin{

private static String createDate(){

Calendar cal = Calendar.getInstance();

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");

cal.add(Calendar.DATE,-1);

String date = sdf.format(cal.getTime());

return date;

}

//@SuppressWarnings("unchecked")

private static JSONArray getSerList(File FileSer) throws Exception{

BufferedReader br = new BufferedReader(new FileReader(FileSer));

String temp = null;

JSONArray serlist=null;

while((temp=br.readLine())!=null){

//ArrayList serlist = new ArrayList(JSONArray.fromObject(temp));

serlist = JSONArray.fromObject(temp);

//System.out.println(serlist.toString());

}

System.out.println(serlist.toString());

return serlist;

}

private static void outPutMain(File FileSpend, JSONArray SerList, File FileOut, String Date) throws Exception{

String temp = null;

BufferedReader br = new BufferedReader(new FileReader(FileSpend));

HashMap> serTypeCoin = new HashMap>();

while((temp=br.readLine())!=null){

String [] line = temp.split("\t");

String uid = line[1];

//String str = "123456789";

String ser = uid.substring(0,uid.length()-7);

int coin = Integer.parseInt(line[4]);

String goods = line[7];

//System.out.println(ser);

//if (SerList.contains(ser)){

//    System.out.println();

//}

String type = (SerList.contains(ser))?"old":"new";

if (uid.substring(0,1).equals("g")){

//使用嵌套字典

if(serTypeCoin.get(type)==null){

HashMap hm = new HashMap();

hm.put(goods, coin);

//serTypeCoin.put(type,new HashMap(){put(goods, coin);})

serTypeCoin.put(type, hm);

}else{

if(serTypeCoin.get(type).get(goods)==null){

serTypeCoin.get(type).put(goods, coin);

}else{

serTypeCoin.get(type).put(goods, serTypeCoin.get(type).get(goods)+coin);

}

}

}

}

if(!FileOut.exists())

FileOut.createNewFile();

FileOutputStream out = new FileOutputStream(FileOut, true);

Iterator it = serTypeCoin.keySet().iterator();

while(it.hasNext()){

String type = (String) it.next();

HashMap hm = (HashMap) serTypeCoin.get(type);

Iterator  hmit = hm.keySet().iterator();

while(hmit.hasNext()){

String goods = hmit.next();

int coin = hm.get(goods);

StringBuffer sb = new StringBuffer();

sb.append(Date+"\t"+type+"\t"+goods+"\t"+coin+"\n");

//System.out.println(Date+"\t"+type+"\t"+goods+"\t"+coin);

out.write(sb.toString().getBytes("utf-8"));

}

System.out.println(type+":"+ serTypeCoin.get(type).size());

}

}

public static void main(String[] args) throws Exception{

String date = (args.length>=1)? args[0]:(createDate());

String superhero = "/home/data/superhero/";

String spendlogpath = superhero+"spendlog/";

String visopath = superhero+"viso_config/";

String outpath = superhero+"wang/result/";

String spendlogname =  "spendlog_"+date;

String visoser = "pub_ser_list_"+date;

String outname = "new_and_old_server_goodstype_spend_coin_"+date;

System.out.println(date);

File filespend = new File(spendlogpath+spendlogname);

File fileser = new File(visopath+visoser);

File fileout = new File(outpath+outname);

JSONArray serList = getSerList(fileser);

outPutMain(filespend, serList, fileout, date);

}

}

在linux 环境下且需要引入外部jar包时进行编译代码的命令范例:

javac -classpath /home/data/superhero/wang/myjlib/json-lib-2.4-jdk15.jar \ HanPengNewAndOldServerGoodsTypeSpendCoin.java

编译后运行java的命令范例为:

java -Djava.ext.dirs=/home/data/superhero/wang/myjlib HanPengNewAndOldServerGoodsTypeSpendCoin

注:  参数    -Djava.ext.dirs=/目录  只在 jdk 1.6版本之后的才可用。 其中   目录,如范例中 \ /home/data/superhero/wang/myjlib 为存放外部jar 包的地址。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值