2

我正在尝试解析本地 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 并阅读了相关帖子。它们可能很相似,但我在拼凑这些部分时运气不佳。]

4

2 回答 2

2

从该 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);
  }
}
于 2012-10-13T20:43:27.127 回答
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;     
}
于 2012-10-13T22:07:25.497 回答