在Java中用Gson解析Json

时间:2012-10-13 20:39:35

标签: java json gson

我正在尝试解析本地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并阅读相关帖子。它们可能很相似,但我把这些碎片拼凑起来并不是很幸运。]

2 个答案:

答案 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_tweettweet@3030d5aa)的控制台参考 将方法toString()添加到tweet类中 例如

@Override 
public String toString()  
{  
   return "from_user: " + from_user + "; from_user_name : " + from_user_name;     
}