Java 使用Jackson实现解析器
到目前为止,我有一个tweet.json文件,里面是tweet的集合。我构建了一个tweet.class,它是tweet中键值的对象集合 现在我想使用jackson实现一个解析,它应该在tweet.json中逐行运行,并且每个tweet(line)都被解析为POJO。所以每一行都是一个POJO 我该怎么做 这就是我所做的Java 使用Jackson实现解析器,java,json,twitter,Java,Json,Twitter,到目前为止,我有一个tweet.json文件,里面是tweet的集合。我构建了一个tweet.class,它是tweet中键值的对象集合 现在我想使用jackson实现一个解析,它应该在tweet.json中逐行运行,并且每个tweet(line)都被解析为POJO。所以每一行都是一个POJO 我该怎么做 这就是我所做的 ObjectMapper mapper = new ObjectMapper(); ParsedTweets tweets = mapper.readValue(new Fil
ObjectMapper mapper = new ObjectMapper();
ParsedTweets tweets = mapper.readValue(new File("tweet.json"), tweet.class);
json文件示例
{"text": "MVA/Transport. Greater Hume (Hume Hwy, Holbrook, NSW 2644) at 7 Mar 2017 03:58 #NSWRFS #MVATransport", "user": {"id": "4721717942", "name": "NSW Fire Updates"}, "lang": "en", "coordinates": { "coordinates": [147.273696, -35.785469] , "type":"Point"}, "created_at": "Mon Mar 06 17:29:31 +0000 2017"}
{"text": "Yes! Everything happens for a reason. The rain doesn't want the Swedru people to go& flood Westhills mall this eveningAssuming the file contains tweets in the below format:
[{
"id": "1",
"text" : "abc"
}, {
"id": "2",
"text" : "def"
}]
{“text”:“MVA/Transport.Greater Hume(休谟Hwy,Holbrook,NSW 2644)于2017年3月7日03:58{NSWRFS#MVATransport”,“user”:{“id”:“4721717942”,“name”:“NSW Fire Update”},“lang”:“en”,“坐标”:{“坐标”:[147.273696,-35.785469],“type”:“Point”},于2017年3月6日星期一17:29:31+0000创建”}
{“text”:“是的!一切都是有原因的。雨不希望斯维德鲁人今晚去西山购物中心,假设文件中包含以下格式的推文:
class tweet {
private String id;
private String text;
//getters and setters
public String toString(){
return this.id + "," + this.name + "," + this.text + "," + this.coordinates + "," + this.created_at;
}
和tweet
类具有以下字段:
ObjectMapper mapper = new ObjectMapper();
List<tweet> tweets = mapper.readValue(new File("tweet.json"), new TypeReference<List<tweet>>(){});
您可以使用Jackson的TypeReference
对列表进行反序列化,例如:
public class Test {
public static void main(String[] args) throws Exception {
List<Tweet> tweets = new ArrayList<>();
ObjectMapper mapper = new ObjectMapper();
try(BufferedReader reader = new BufferedReader(new FileReader("tweet.json"))){
String line;
while((line = reader.readLine()) != null){
tweets.add(mapper.readValue(line, Tweet.class));
}
}
}
}
你能添加一个json
的例子以及Tweet
classSure的结构吗?我刚刚添加了一个例子,对不起,我以为它已经发布了,但我的互联网已经完成了。你能再检查一下吗?我刚刚发布了是的,这就是我打算做的。逐行阅读json文件…感谢你的洞察力。但是它在那里不起作用错误消息“Error:(28,6)java:解析时到达文件末尾”。您能检查更新的版本i postedError或exception吗?您能发布stacktrace吗?我想这是一个错误。解析时出错。错误显示“Error:(28,6)java:解析时到达文件末尾”,这是代码的最后一行。in“}“如何使用stacktrace?