我正在尝试解析本地json文件,输出不是它应该显示的内容。 我对Json(和Gson)的经验不多,所以我不清楚问题是什么。
以下是推文类:
public class tweet {
String from_user;
String from_user_name;
String profile_image_url;
String text;
public tweet(){
//empty constructor
}
}
这是使用Gson的类:
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import com.google.gson.Gson;
public class tweetfeedreader {
public static void main(String args[]) throws FileNotFoundException {
Gson gson = new Gson();
BufferedReader bufferedReader = new BufferedReader(new FileReader(
"C:/Users/LILITH/Desktop/jsonfile.json"));
tweet J_tweet = gson.fromJson(bufferedReader, tweet.class);
System.out.println(J_tweet);
}
}
最后,我已保存到本地目录的.json文件: http://search.twitter.com/search.json?q=%40android
没有错误,但输出是:
tweet@3030d5aa
我不确定可能出现的问题,谢谢你的指导!
[编辑:我忘了补充说我之前搜索过SO并阅读相关帖子。它们可能很相似,但我把这些碎片拼凑起来并不是很幸运。]
答案 0 :(得分:1)
将结果数组从json中删除,在[] s之外不留任何内容。
然后,这是至少我可以修改代码以使其工作:
import java.lang.reflect.*;
import java.io.*;
import java.util.*;
import com.google.gson.*;
import com.google.gson.reflect.*;
public class tweetfeedreader {
public static void main(String args[]) throws IOException {
Gson gson = new Gson();
BufferedReader bufferedReader = new BufferedReader(new FileReader(
"jsonfile.json"));
String line;
StringBuilder sb = new StringBuilder();
while ((line = bufferedReader.readLine()) != null) sb.append(line);
Type tweetCollection = new TypeToken<Collection<tweet>>(){}.getType();
Collection<tweet> tweets = gson.fromJson(line, tweetCollection);
for (final tweet t : tweets) System.out.println(t.text);
}
}
答案 1 :(得分:1)
System.out.println(J_tweet);
登录对象J_tweet
(tweet@3030d5aa
)的控制台参考
将方法toString()
添加到tweet
类中
例如
@Override
public String toString()
{
return "from_user: " + from_user + "; from_user_name : " + from_user_name;
}