import java.io.IOException;
import java.io.InputStreamReader;
import java.io.Reader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
/**
- JSON转换工具类
*/
public class JsonUtil {
/**
* json字符串转Map
* @param jsonStr
* @return
*/
public static Map<String, Object> parseJSON2Map(String jsonStr)
{
String fStr = jsonStr.substring(0, 1);
String lStr = jsonStr.substring(jsonStr.length() - 1,jsonStr.length());
if("[".equals(fStr)&&"]".equals(lStr))
{
jsonStr = jsonStr.substring(1, jsonStr.length() - 1);
}
Map<String, Object> map = new HashMap<String, Object>();
//最外层解析
JSONObject json = JSONObject.fromObject(jsonStr);
for(Object k : json.keySet()){
Object v = json.get(k);
//如果内层还是数组的话,继续解析
if(v instanceof JSONArray){
List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
Iterator<JSONObject> it = ((JSONArray)v).iterator();
while(it.hasNext())
{
JSONObject json2 = it.next();
list.add(parseJSON2Map(json2.toString()));
}
map.put(k.toString(), list);
}else if(v instanceof JSONObject){
map.put(k.toString(),parseJSON2Map(v.toString()));
}
else
{
map.put(k.toString(), v);
}
}
return map;
}
/**
* json字符串转Map(只转换一层map)
* @param jsonStr
* @return
*/
public static Map<String, Object> parseJSON21Map(String jsonStr)
{
String fStr = jsonStr.substring(0, 1);
String lStr = jsonStr.substring(jsonStr.length() - 1,jsonStr.length());
if("[".equals(fStr)&&"]".equals(lStr))
{
jsonStr = jsonStr.substring(1, jsonStr.length() - 1);
}
Map<String, Object> map = new HashMap<String, Object>();
//最外层解析
JSONObject json = JSONObject.fromObject(jsonStr);
for(Object k : json.keySet()){
Object v = json.get(k);
map.put(k.toString(), v);
}
return map;
}
/**
* json字符串转List
* @param jsonStr
* @return
*/
public static List<Map<String, Object>> parseJSON2List(String jsonStr)
{
JSONArray jsonArr = JSONArray.fromObject(jsonStr);
List<Map<String, Object>> list = new ArrayList<Map<String,Object>>();
Iterator<JSONObject> it = jsonArr.iterator();
while(it.hasNext())
{
JSONObject json2 = it.next();
list.add(parseJSON2Map(json2.toString()));
}
return list;
}
/**
* 读取项目下json文件,获取公用配置
**/
public String readJson(String fileName){
String result = "";
try {
InputStreamReader inputStream = new InputStreamReader(this
.getClass().getClassLoader().getResourceAsStream(fileName),
"UTF-8");
Reader reader = inputStream;
int ch = 0;
StringBuffer sb = new StringBuffer();
while((ch=reader.read()) !=-1){
sb.append((char)ch);
}
reader.close();
result = sb.toString();
result = result.replaceAll("/\\*.*?\\*/", "");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return result;
}
}