我正在尝试将解析为ArrayList字符串的列表JSON写到一个txt文件中。然而,我一直收到这样的错误:
Exception in thread "main" java.lang.NullPointerException
at kr.ac.uos.datamining.JSONParser.parseForTweets(JSONParser.java:47)
at kr.ac.uos.datamining.JSONParser.<init>(JSONParser.java:25)
at kr.ac.uos.datamining.test.main(test.java:21)这是主要的类代码test.java:
package kr.ac.uos.datamining;
import java.io.File;
import java.io.FileWriter;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.List;
import kr.ac.uos.datamining.JSONParser;
import kr.ac.uos.datamining.Tweet;
import kr.ac.uos.datamining.User;
public class test {
public static List <String> list = new ArrayList<String>();
public static void main(String[] args) throws IOException, FileNotFoundException, InterruptedException, SQLException {
**Line 21**
JSONParser j = new JSONParser(new File("D:/usr/samsunggalaxy.txt"));
ArrayList<Tweet> tweets = j.getTweets();
for(Tweet tweet : tweets){
User user = tweet.getUser();
list.add(tweet.getText() + " | " + user.getScreenName());
}
FileWriter writer = new FileWriter("samsunggalaxy.txt");
for(String str: list) {
writer.write(str);
}
writer.close();
}
}这是JSON Parser行,错误跟踪显示:
private void parseForTweets(){
Scanner in = null;
try {
in = new Scanner(json);
} catch (FileNotFoundException e) {
}
**Line47** while(in.hasNextLine()){
String rawTweet = in.nextLine();
if(!rawTweet.contains("\"retweeted\":true")){
Tweet tweet = TweetParser.parseTweet(rawTweet);
tweets.add(tweet);
}
}
}我认为错误出现在字符串rawTweet =in.nextLine();然而,似乎无法理解这一点。JSON数据本身对此有影响吗?我是说是因为我把数据分析错了吗?还是因为另一个原因?
任何帮助都是非常感谢的。
发布于 2014-03-26 06:28:03
问题似乎在于您没有处理异常,因此,如果new Scanner(json)行失败,则in引用将为null。在这种情况下,您将在while(in.hasNextLine())行中失败。
但是,没有代码中的行号,很难准确地判断这是否是真正的问题。
发布于 2014-03-26 06:28:11
如果您确定问题是in.nextLine() (请调试您的代码以确定问题在哪里),那么尝试以下一个:
Iterator<JSONObject> iterator = yourJsonObject.iterator();
while (iterator.hasNext()) {
JSONObject factObj = (JSONObject) iterator.next();
...
}https://stackoverflow.com/questions/22653016
复制相似问题