JSON使用案例--一次性解析比较大的json文件

来源:互联网 发布:淘宝卖的玛咖是真是假 编辑:程序博客网 时间:2024/05/16 15:51

目前在做数据交互的功能时,由于双方交互的格式为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(SafeUtils.getString(content)).getAsJsonArray();        return Jarray;    }}
0 0
原创粉丝点击