在不使用外部库的情况下读取JSON文件(仅使用org.json进行更新)

时间:2014-05-06 08:00:33

标签: java json

我有一个分配,我必须阅读包含选举信息的json文件并保存我得到的数据。问题是我无法使用任何外部库,比如简单的json等。这位专业人士说我做了类似的事情:

FileInputStream fin = new FileInputStream(new File(filename));
JSONTokener tokener = new JSONTokener(fin);
JSONObject elections = new JSONObject(tokener);

JSONArray candidates = elections.getJSONArray("candidates"); JSONArray
ballots = elections.getJSONArray("ballots");

然后我可以用

访问我的候选人
candidates.getString(i)

我的选票

JSONArray ballot = ballots.getJSONArray(i)

但是当我运行代码时,我得到以下异常:

org.json.JSONException: A JSONObject text must begin with '{' at 6 [character 1 line 6]
at org.json.JSONTokener.syntaxError(JSONTokener.java:433)
at org.json.JSONObject.<init>(JSONObject.java:194)
at Schulze.main(Schulze.java:17)

例外情况来自这个例外:

JSONObject elections = new JSONObject(tokener);

json文件内容是这样的:

  

{&#34;候选人&#34;:[          &#34; a&#34;,&#34; b&#34;,&#34; c&#34;,&#34; d&#34; ],&#34;选票&#34;:[          [0,2,3,1],          [0,2,3,1],          [0,2,3,1],          [0,2,3,1],          [0,2,3,1],          [0,2,3,1],

   [1, 0, 3, 2],
   [1, 0, 3, 2],
   [1, 0, 3, 2],
   [1, 0, 3, 2],

   [2, 3, 1, 0],
   [2, 3, 1, 0], 
   [2, 3, 1, 0],

   [3, 1, 0, 2],
   [3, 1, 0, 2], 
   [3, 1, 0, 2],
   [3, 1, 0, 2],        

   [3, 2, 1, 0],
   [3, 2, 1, 0],        
   [3, 2, 1, 0],
   [3, 2, 1, 0]    ] }

关于这可能是什么问题的任何想法?

1 个答案:

答案 0 :(得分:1)

json文件仍然是普通的文本文件。您可以忽略org.json并使用处理文本文件的普通Java代码读取该文件。这不需要任何外部库。