亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在JAVA中獲取json文件

在JAVA中獲取json文件

江戶川亂折騰 2021-12-01 15:01:12
我有一個 json 文件,其格式為:{    "results": [        {            "quiz": "1112??? ??? ??? ???? ??? ?????? ",            "answer": " X "        },        {            "quiz": "16?? ? ???? ???? ??? ???, ?? ?? ?? ??? ??? ",            "answer": " X "        },        {            "quiz": "1769? ????? ???? ?? ??? ",            "answer": "??"        }    ]}我想在JAVA區獲取這個文件。我有一個依賴項com.googlecode.json-simple(1.1.1 version),我有一個我寫的代碼拋出異常:(public List<CheatImported> importJsonFile(String path) throws IOException, FileNotFoundException, ParseException {        JSONObject root = (JSONObject)jsonParser.parse(new FileReader(path));        JSONArray results = (JSONArray)root.get("results");        @SuppressWarnings("rawtypes")        Iterator iter = results.iterator();        List<CheatImported> resultList = new ArrayList<CheatImported>();        while(iter.hasNext()){            JSONObject item = (JSONObject)iter.next();            String question = (String)item.get("quiz");            String answer = (String)item.get("answer");            CheatImported imported = new CheatImported();            imported.setQuestion(question);            imported.setAnswer(answer);            resultList.add(imported);        }        return resultList;    }ArrayList 的類型是一個只有兩個字符串屬性的類:@Getter@Setter@NoArgsConstructorpublic class CheatImported {    private String question;    private String answer;}這是我的junit代碼:@Test    public void cheatImported() throws Exception{        String path = "D:\\workspace_orderByDate\\20180105\\moonBladeQuiz\\src\\main\\resources\\static\\data.json";        List<CheatImported> list = importService.importJsonFile(path);        assertTrue(list.size() > 0);    }
查看完整描述

1 回答

?
MM們

TA貢獻1886條經驗 獲得超2個贊

在字符或標記在位置 0 處意外的情況下,雖然 JSON 看起來有效,但幾乎總是字節順序標記的問題。

來自維基百科:

字節順序標記 (BOM) 是一個 Unicode 字符,即 U+FEFF BYTE ORDER MARK (BOM),它在文本流開頭作為幻數出現,可以向使用該文本的程序發出若干信號。

標記的功能之一是指示多字節字符的哪個字節先出現。這稱為流的字節序。對于 UTF-8,順序是一成不變的,因此 BOM 在 UTF-8 的上下文中沒有任何作用。

但是,JSON 規范不允許存在除空格或 JSON 結構之外的任何標記。字節順序標記也不例外,因此字節順序標記不是有效的 JSON。

您需要從文件中刪除字節順序標記才能使其工作。

  • 在 Notepad++ 中,打開文件并選擇Encoding ? UTF-8 (without BOM)。

  • 或者,您可以使用十六進制編輯器打開文件并刪除前三個字節,即0xEF BB BF.


查看完整回答
反對 回復 2021-12-01
  • 1 回答
  • 0 關注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號