简单的JSON意外的令牌{在位置> 1
问题描述:
我试图使用JSON作为Java应用程序的一部分来从.json文件中提取特定数据。每当我运行该程序时,它会在尝试解析时收到意外的令牌错误消息。简单的JSON意外的令牌{在位置> 1
JSON文件的简化版本如下:
{"id":123,"text":"sample1","user":{"id":111,"name":"username"},"lang":"en"}
{"id":345,"text":"sample2","user":{"id":555,"name":"user2"},"lang":"en"}
我的代码如下:
public static void readJSON() {
JSONParser jsonParser = new JSONParser();
try {
FileReader reader = new FileReader(fileLocation);
JSONObject jsonObject = (JSONObject) jsonParser.parse(reader);
JSONArray jsonArray = (JSONArray) jsonObject.get("");
Iterator<?> i = jsonArray.iterator();
while (i.hasNext()) {
JSONObject obj = (JSONObject) i.next();
int tweetID = (int) obj.get("id");
String lang = (String) obj.get("lang");
}
} catch (Exception e) {
e.printStackTrace();
}
}
在这个例子中,代码的行:
JSONObject jsonObject = (JSONObject) jsonParser.parse(reader);
由于第二个JSON对象的第一个左大括号({)处的意外标记而引发错误(即,在大括号befo重新“ID”:345)。
我该如何解决这个问题? 而且,作为一个后续,在这个例子中,如何为用户名提取信息呢?
感谢您花时间阅读本文并提供任何帮助!
答
该文件是无效的JSON文件,它包含每行上的整个对象。
您需要做的是逐行读取文件,然后将每行传递给解析器以创建一个新对象。
答
你的JSON确实是错的。它实际上包含2个有效的JSON。如果您想创建一个有效的JSON文档,则必须使用{
和}
或[ ]
包装输入,如果这是一个数组或集合。请注意分隔两个不同实体的逗号。
[
{"id":123,"text":"sample1","user":{"id":111,"name":"username"},"lang":"en"},
{"id":345,"text":"sample2","user":{"id":555,"name":"user2"},"lang":"en"}
]
答
您试图解析JSON对象,并且实际上您有两个JSON对象。 而在你的代码中,你实际上需要一个JSON对象数组。 因此,使用正确的JSON数组:
[
{"id":123,"text":"sample1","user":{"id":111,"name":"username"},"lang":"en"},
{"id":345,"text":"sample2","user":{"id":555,"name":"user2"},"lang":"en"}
]
为了快速检查JSON语法,就可以使用一些在线tool。
答
如果您修复了您的代码,则可以解决意外的令牌错误。
public static void readJSON() {
JSONParser jsonParser = new JSONParser();
try {
FileReader reader = new FileReader(fileLocation);
//You need to fix this part
JSONArray jsonArray = (JSONArray) jsonParser.parse(reader);
Iterator<?> i = jsonArray.iterator();
while (i.hasNext()) {
JSONObject obj = (JSONObject) i.next();
int tweetID = (int) obj.get("id");
String lang = (String) obj.get("lang");
}
} catch (Exception e) {
e.printStackTrace();
}
}
基本上这是'{} {}'这在JSON中是无效的。 JSON或者需要是文件本身'[{},{}]'中的一个数组,否则您需要一次解析它一行 –
您的JSON无效我的意思是格式错误。 – Enzokie