开发者社区> 问答> 正文

java解析json文件

java解析json文件(文件大小50M),需要计算json文件中第一层的记录数大小。如json文件:
[{"name":"帐号","package_name":"com.android.account","check_version":"1.2"},
{"name":"系统升级","package_name":"com.android.osupdate","check_version":"1.0"},]
大小为2.
网上找了下方法,都是读取文件内容放到string中,但是文件大小是50M,最大值是30000条记录,这种方法不可行吧?
请问有谁能帮忙解下。

展开
收起
蛮大人123 2016-06-08 16:08:25 6220 0
4 条回答
写回答
取消 提交回答
  • 常见的json解析框架,都包含读取和存储json文件的功能。如果没有,可以通过io操作,将文件读取到字符串,然后再进行解析。常见的解析json框架有fastjson,jackjson等。
    2019-07-17 19:32:12
    赞同 展开评论 打赏
  • 可以用fastjson库
    2019-07-17 19:32:12
    赞同 展开评论 打赏
  • 我之前800万条数据以类似的方式读出来,30000条问题不大吧

    2019-07-17 19:32:12
    赞同 展开评论 打赏
  • 我说我不帅他们就打我,还说我虚伪
    public class Util {
    
    public String ReadFile(String Path){
    BufferedReader reader = null;
    String laststr = "";
    try{
    FileInputStream fileInputStream = new FileInputStream(Path);
    InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream, "UTF-8");
    reader = new BufferedReader(inputStreamReader);
    String tempString = null;
    while((tempString = reader.readLine()) != null){
    laststr += tempString;
    }
    reader.close();
    }catch(IOException e){
    e.printStackTrace();
    }finally{
    if(reader != null){
    try {
    reader.close();
    } catch (IOException e) {
    e.printStackTrace();
    }
    }
    }
    return laststr;
    }
    
    }
    (2)Test.java:
    import java.util.ArrayList;
    import java.util.Iterator;
    import java.util.List;
    
    import net.sf.json.JSONArray;
    import net.sf.json.JSONObject;
    
    public class Test {
    
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    String JsonContext = new Util().ReadFile("D:\\test\\apkinfo.json");
    JSONArray jsonArray = JSONArray.fromObject(JsonContext);
    int size = jsonArray.size();
    System.out.println("Size: " + size);
    for(int  i = 0; i < size; i++){
    JSONObject jsonObject = jsonArray.getJSONObject(i);
    System.out.println("[" + i + "]name=" + jsonObject.get("name"));
    System.out.println("[" + i + "]package_name=" + jsonObject.get("package_name"));
    System.out.println("[" + i + "]check_version=" + jsonObject.get("check_version"));
    }
    }
    
    }
    2019-07-17 19:32:12
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
神龙云服务器产品及技术深度解析 立即下载
弹性创造价值:基于ECS的最佳性价比实践解析 立即下载
又快又稳:阿里云下一代虚拟交换机解析 立即下载

相关镜像