package com.hao.common;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.hao.util.HttpClientUtil;
import com.google.common.collect.*;
import org.apache.commons.io.FileUtils;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileReader;
import java.io.IOException;
import java.util.List;
/**
* 用来存放公共的操作
* Created by user on 2016/2/18.
*/
public class Commons {
/**
* 获取document
* @param url
* @return
* @throws IOException
*/
public static Document getDocument(String url) throws IOException {
String content = HttpClientUtil.sendHttpsGet(url);
Document document = Jsoup.parse(content);
return document;
}
public static Document getDocument(String url,String charset){
String content = HttpClientUtil.sendHttpGet(url,charset);
return Jsoup.parse(content);
}
/**
* 将字符串写入文件
* @param path 文件路径
* @param data
* @param append 追加
* @throws IOException
*/
public static void writeStringtoFile(String path,String data,boolean append) throws IOException {
FileUtils.writeStringToFile(new File(path),data,append);
}
/**
* 从文件路径中读取链接并转换成一个list
* @param path
* @return
* @throws IOException
*/
public static List<String> readLink(String path) throws IOException {
List<String> links = Lists.newArrayList();
BufferedReader reader = new BufferedReader(new FileReader(new File(path)));
String input = null;
while((input = reader.readLine()) != null){
links.add(input);
}
return links;
}
/**
* 处理特定格式的JSON字符串
* {
"returncode": 0,
"message": null,
"result": {
"seriesid": 771,
"yearid": 5063,
"paramtypeitems": [
{
"name": "基本参数",
"paramitems": [
{
"name": "车型名称",
"valueitems": [
{
"specid": 16364,
"value": "汉兰达 2013款 2.7L 两驱5座紫金版"
},
{
"specid": 16365,
"value": "汉兰达 2013款 2.7L 两驱7座紫金版"
},
{
"specid": 16470,
"value": "汉兰达 2013款 2.7L 两驱7座探索版"
}
]
},
},
.... 解析config option的JSON字符串
其中typeItems,items 在不同JSON字符串中不同 eg :paramtypeitems paramitems
请去对应页面查找
* @param json
*/
/**
*
public static List<List<String>> parseJson(String json,String typeItems,String items,String valueorName,String[] ids){
List<String> lists = Lists.newArrayListWithExpectedSize(ids.length);
List<List<String>> results = Lists.newArrayList();
JSONObject jsonObject = JSON.parseObject(json);
JSONArray jsonArray = jsonObject.getJSONObject("result").getJSONArray(typeItems);
for (int k = 0; k < jsonArray.size(); k++) {
JSONArray jsonArray1 = jsonArray.getJSONObject(k).getJSONArray(items);
for (int i = 0; i < jsonArray1.size(); i++) {
JSONArray jsonArray2 = jsonArray1.getJSONObject(i).getJSONArray("valueitems");
for (int j = 0; j < jsonArray2.size(); j++) {
String specId = jsonArray.getJSONObject(j).getString("specid");
String value = jsonArray2.getJSONObject(j).getString(valueorName);
lists.add(value);
}
results.add(lists);
lists = Lists.newArrayListWithCapacity(ids.length);
}
}
return results;
}
**/
public static Table<String,String,String> parseJson(String json,String typeItems,String items,String valueorName,String[] ids){
Table<String,String,String> table = HashBasedTable.create();
JSONObject jsonObject = JSON.parseObject(json);
JSONArray jsonArray = jsonObject.getJSONObject("result").getJSONArray(typeItems);
for (int k = 0; k < jsonArray.size(); k++) {
JSONArray jsonArray1 = jsonArray.getJSONObject(k).getJSONArray(items);
for (int i = 0; i < jsonArray1.size(); i++) {
String name = jsonArray1.getJSONObject(i).getString("name");
JSONArray jsonArray2 = jsonArray1.getJSONObject(i).getJSONArray("valueitems");
for (int j = 0; j < jsonArray2.size(); j++) {
String specId = jsonArray2.getJSONObject(j).getString("specid");
String value = jsonArray2.getJSONObject(j).getString(valueorName);
table.put(name,specId,value);
}
}
}
return table;
}
public static List<String> parseStandardField(String json){
List<String> names = Lists.newArrayList();
JSONObject jsonObject = JSON.parseObject(json);
JSONArray jsonArray = jsonObject.getJSONObject("result").getJSONArray("items");
for (int i = 0; i < jsonArray.size(); i++) {
String name = jsonArray.getJSONObject(i).getString("name");
names.add(name);
}
return names;
}
/**
* 用来处理color的解析程序 因为color和 option config格式不同
* @param json
* @param ids
*/
/**
public static List<List<String>> parseJsonForColor(String json,String[] ids){
List<String> lists = Lists.newArrayListWithExpectedSize(ids.length);
List<List<String>> results = Lists.newArrayList();
JSONObject jsonObject = JSON.parseObject(json);
JSONArray jsonArray = jsonObject.getJSONObject("result").getJSONArray("specitems");
for (int k = 0; k < jsonArray.size(); k++) {
JSONArray jsonArray1 = jsonArray.getJSONObject(k).getJSONArray("coloritems");
for (int i = 0; i < jsonArray1.size(); i++) {
String value = jsonArray1.getJSONObject(i).getString("name");
lists.add(value);
}
results.add(lists);
lists = Lists.newArrayList();
}
return results;
}
**/
/**
* 用来处理color的解析程序 因为color和 option config格式不同
* @param json
* @param ids
*
* 暂时忽略颜色的处理
*/
// public static List<Table<String,String,List<String>>> parseJsonForColor(String json,String[] ids){
// List<String> lists = Lists.newArrayListWithExpectedSize(ids.length);
// List<Map<String,List<String>>> results = Lists.newArrayList();
//// Map<String,List<String>> map = Maps.newHashMap();
// Table<String,String,String> table = HashBasedTable.create();
// JSONObject jsonObject = JSON.parseObject(json);
// JSONArray jsonArray = jsonObject.getJSONObject("result").getJSONArray("specitems");
// for (int k = 0; k < jsonArray.size(); k++) {
// String specId = jsonArray.getJSONObject(k).getString("specid");
// JSONArray jsonArray1 = jsonArray.getJSONObject(k).getJSONArray("coloritems");
// for (int i = 0; i < jsonArray1.size(); i++) {
// String value = jsonArray1.getJSONObject(i).getString("name");
// lists.add(value);
// }
// map.put(specId,lists);
// results.add(map);
// map = Maps.newHashMap();
// lists = Lists.newArrayList();
// }
// return results;
// }
public static String[] split(String list){
String[] ids = list.split(",");
return ids;
}
}