簡體   English   中英

Java中的多個JSON解析

[英]Multiple JSON parsing in Java

我在單個文件input.txt中有多個JSON:

{"Atlas":{"location":"lille","lat":28.4,"long":51.7,"country":"FR"}}
{"Atlas":{"location":"luxum","lat":24.1,"long":54.7,"country":"LU"}}
{"Atlas":{"location":"ghent","lat":28.1,"long":50.1,"country":"BE"}}

注意:它們不用逗號(“,”)分隔,它們不是數組。 這些是有效的單JSON。

我相信它應該可以獲得輸出。

我下面的代碼既沒有顯示錯誤也沒有輸出? 這有什么不對?

這是我的代碼:

 class Loc{
        private String location;
        private Long lat;
        private Long long;
        private String country;

    //getter and setter methods
    }
    public class JsonReader {
        public static void main(String[] args) throws ParseException {

            try {
                BufferedReader br= new BufferedReader(new FileReader("C:\\input.txt"));
                String jsonTxt = IOUtils.toString( br );                
                JSONParser parser = new JSONParser();                               
                String line=null;
                while ((line = br.readLine()) != null)
                {
                    Loc emp = (Loc) (new JSONParser().parse(jsonTxt));
                    System.out.printf("%s",emp.getLocation());
                    System.out.printf("\t%d",emp.getlat());
                    System.out.printf("\t%d",emp.getLong());
                    System.out.printf("\t%s",emp.getCountry()"\n");
            }
    }catch (FileNotFoundException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

}}

你正在解析錯誤的東西。 你應該解析line而不是jsonText line是從BufferedReader讀入的實際行。

您將IOUtils.toString(BufferedReader)的結果傳遞給JSONParser 如您所知,整個文件內容無效JSON。 假設每一行都是有效的JSON,將數據逐行傳遞給解析器。 您的代碼已經設置為執行此操作。

在你的循環中,將line傳遞給解析器,並擺脫IOUtils東西。

我假設JSONParserorg.json.simple.parser.JSONParser 如果是這樣,它不會建立自己的Loc無需您再為你的對象:只解析JSON和返回的樹JSONObjectsJSONArray等見這里和對位JSONAware 這里

或者查看JacksonGSON將JSON解析為java對象。

此外,您的Loc成員不能命名為long :這是一個java關鍵字,將阻止您的代碼編譯。

看起來你需要解析行,而不是jsonTxt

Loc emp = (Loc) (new JSONParser().parse(jsonTxt));

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM