java - 读取包含许多 json 对象的 Json 文件

标签 java json

我希望用Java递归地读取一个包含以下内容的json文件。我怎样才能实现这一目标?

{"preview":false,"result":{"TransactionType":"Mobile","TransactionID":"STSVSTFS7SVS3S","TransTime":"20181210171511"}}
{"preview":false,"result":{"TransactionType":"Mobile","TransactionID":"LKSNS6S2S7SVS3S","TransTime":"20181210171511"}}
{"preview":false,"result":{"TransactionType":"Mobile","TransactionID":"TSSKBDGD7SVS3S","TransTime":"20181210171511"}}

这是我的 Java 代码,除了它只读取第一个 json

import com.brian.db.DBConnector;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Date;
import java.util.Iterator;
import org.json.simple.JSONArray;
import org.json.simple.JSONObject;
import org.json.simple.parser.JSONParser;
import org.json.simple.parser.ParseException;


public class ReadJSONData {

    private static final String filePath = "D:\\test\\c2b.json";

    public static void main(String[] args) throws SQLException {
        try {
            // read the json file
            FileReader reader = new FileReader(filePath);
            JSONParser jsonParser = new JSONParser();
            JSONObject jsonObject = (JSONObject) jsonParser.parse(reader);
            //System.out.println(jsonObject);
            Object preview =  jsonObject.get("preview");
            System.out.println("Preview:"+preview);

            JSONObject result = (JSONObject) jsonObject.get("result");
            System.out.println("RESULT:"+result);

            String transactionType =  (String) result.get("TransactionType");
            System.out.println("TransactionType:"+transactionType);

            String transid = (String) result.get("TransID");
            System.out.println("TransID:"+transid);

            String transTime =  (String) result.get("TransTime");
            System.out.println("TransTime:"+ transTime);



        } catch (FileNotFoundException ex) {

            ex.printStackTrace();

        } catch (IOException ex) {

            ex.printStackTrace();

        } catch (ParseException ex) {

            ex.printStackTrace();

        } catch (NullPointerException ex) {

            ex.printStackTrace();

        }

    }

}

最佳答案

iterate over the linesparse each one separately :

public class ReadJSONData {

    private static final String filePath = "D:\\test\\c2b.json";

    public static void main(String[] args) throws SQLException {
        JSONParser jsonParser = new JSONParser();
        try (Stream<String> stream = Files.lines(Paths.get(filePath))) {
            stream.forEach(line -> {
                try {
                    JSONObject jsonObject = (JSONObject) jsonParser.parse(line);
                    …
                } catch (Exception e) {
                }
            });
        }
    }

}

关于java - 读取包含许多 json 对象的 Json 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53763938/

相关文章:

java - JDBC 连接意外关闭

java - Hibernate 和 Oracle10g : Tomcat times out

json - 在grails 2.3.x中使用Rest API JSON

javascript - 如何将Json数据转换为EXTJS中的变量

javascript - 从 JSON 字符串解析图像并在 slider 中显示它们

分布式环境下的Java缓存

java - 使用 Jersey 发送大型 JAXB 对象会生成 OutOfMemoryError

android - 异步任务并从 url NullPointerException 解析 JSONObject

javascript - 如何通过 jQuery.ajax 将 JavaScript 数组发送到 PHP?

java - 无法在 ant javascript 中导入类