目前在做数据交互的功能时,由于双方交互的格式为Json格式,生成的数据都存储在文本文件中,当数据量少的时候,对应的网上的教程很多。目前针对于数据量较大时,写的一个方法。
代码中使用到的jar包为gson-2.1.jar:http://download.csdn.net/detail/dong945221578/8621163
代码中使用到的json样例:
* 解析Json使用到的方法
* @author Steven
* */
public class JsonUtil {
public static void main(String[] args) {
try {
String localFile="d:/2.txt";
StringBuffer stringbuffer =new StringBuffer();
String lineTxt = null;
InputStreamReader read= new InputStreamReader( new FileInputStream(localFile),"UTF-8");
BufferedReader bufferedReader = new BufferedReader(read);
while((lineTxt = bufferedReader.readLine()) != null){
stringbuffer.append(lineTxt);
}
JsonArray Jarray = AnalysisBigJson(stringbuffer.toString());
for(JsonElement obj : Jarray ){
// System.out.println(obj);
JSONObject jsonObject = JSONObject.fromObject(obj.toString());
JSONArray jsonArray_2 = JSONArray.fromObject(jsonObject.getString("reclist"));
for(int i2 = 0;i2 < jsonArray_2.length();i2 ++){
JSONObject jsonObj_2 = jsonArray_2.getJSONObject(i2);
System.out.println(jsonObject.getString("userId"));
System.out.println(jsonObj_2.getString("contentId"));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 此方法用来解析比较大的json数据,效率还是不错的 测试60MB的文件 解析大概需要30秒
* @param content
* @return 返回JsonArray list里面每个obj都是一个json对象
*/
public static JsonArray AnalysisBigJson(String content){
JsonParser parser = new JsonParser();
JsonArray Jarray = parser.parse(content).getAsJsonArray();
return Jarray;
}
}