java - java中的GSON解析器打印null

标签 java json parsing gson

您好,以下是我的 JSON 文件

{
    "completed_in": 0.046,
    "max_id": 286437550577573889,
    "max_id_str": "286437550577573889",
    "next_page": "?page=2&max_id=286437550577573889&q=new%20year",
    "page": 1,
    "query": "new+year",
    "refresh_url": "?since_id=286437550577573889&q=new%20year",
    "results": [{
        "created_at": "Wed, 02 Jan 2013 11:43:28 +0000",
        "from_user": "RodiSilverstone",
        "from_user_id": 855001483,
        "from_user_id_str": "855001483",
        "from_user_name": "Rodi Silverstone",
        "geo": null,
        "id": 286437550577573889,
        "id_str": "286437550577573889",
        "iso_language_code": "en",
        "metadata": {
            "result_type": "recent"
        },
        "profile_image_url": "http:\/\/a0.twimg.com\/profile_images\/2978713010\/5e321e174ded0c14f11d4929c1928912_normal.png",
        "profile_image_url_https": "https:\/\/si0.twimg.com\/profile_images\/2978713010\/5e321e174ded0c14f11d4929c1928912_normal.png",
        "source": "<a href="http:\/\/twitter.com\/">web<\/a>",
        "text": "Bonne annee\/joyeux Noel en retard :S\nHappy New Year\/Merry Christmas w\/ late...\nPS: Pas d'accents car clav' Qwerty car I'm in Australia ^^",
        "to_user": null,
        "to_user_id": 0,
        "to_user_id_str": "0",
        "to_user_name": null
    },
    {
        "created_at": "Wed, 02 Jan 2013 11:43:28 +0000",
        "from_user": "ToddBuell",
        "from_user_id": 461294085,
        "from_user_id_str": "461294085",
        "from_user_name": "Todd Buell",
        "geo": null,
        "id": 286437550334291970,
        "id_str": "286437550334291970",
        "iso_language_code": "en",
        "metadata": {
            "result_type": "recent"
        },
        "profile_image_url": "http:\/\/a0.twimg.com\/profile_images\/2482121747\/bqf3z7knjm3zetmdkc7g_normal.jpeg",
        "profile_image_url_https": "https:\/\/si0.twimg.com\/profile_images\/2482121747\/bqf3z7knjm3zetmdkc7g_normal.jpeg",
        "source": "<a href="http:\/\/twitter.com\/">web<\/a>",
        "text": "Fiscal cliff deal gives markets relief in New Year. \"Super Mario\" has averted euro zone crisis.Things look good for now, but will it last?",
        "to_user": null,
        "to_user_id": 0,
        "to_user_id_str": "0",
        "to_user_name": null
    },
    {
        "created_at": "Wed, 02 Jan 2013 11:43:28 +0000",
        "from_user": "Laughing_Gravy",
        "from_user_id": 16528102,
        "from_user_id_str": "16528102",
        "from_user_name": "Laughing Gravy\u2122",
        "geo": null,
        "id": 286437550313312256,
        "id_str": "286437550313312256",
        "iso_language_code": "en",
        "metadata": {
            "result_type": "recent"
        },
        "profile_image_url": "http:\/\/a0.twimg.com\/profile_images\/3027789460\/1bda0b2d9779e552e5d5f5dc7b46d7c1_normal.jpeg",
        "profile_image_url_https": "https:\/\/si0.twimg.com\/profile_images\/3027789460\/1bda0b2d9779e552e5d5f5dc7b46d7c1_normal.jpeg",
        "source": "<a href="http:\/\/blackberry.com\/twitter">Twitter for BlackBerry\u00ae<\/a>",
        "text": "@Lindow_Man  Happy New Year my friend :)",
        "to_user": "Lindow_Man",
        "to_user_id": 549313793,
        "to_user_id_str": "549313793",
        "to_user_name": "Mr PG",
        "in_reply_to_status_id": 286436483806670848,
        "in_reply_to_status_id_str": "286436483806670848"
    },
    {
        "created_at": "Wed, 02 Jan 2013 11:43:28 +0000",
        "from_user": "ayinnisa",
        "from_user_id": 407600441,
        "from_user_id_str": "407600441",
        "from_user_name": "Arini Faranisa",
        "geo": null,
        "id": 286437550271381504,
        "id_str": "286437550271381504",
        "iso_language_code": "en",
        "metadata": {
            "result_type": "recent"
        },
        "profile_image_url": "http:\/\/a0.twimg.com\/profile_images\/2527223229\/picmix-2172012-144555_normal.jpeg",
        "profile_image_url_https": "https:\/\/si0.twimg.com\/profile_images\/2527223229\/picmix-2172012-144555_normal.jpeg",
        "source": "<a href="http:\/\/ubersocial.com">UberSocial for BlackBerry<\/a>",
        "text": "Happy nu year too my bicih :* RT @ThataMarsya: Happy new year couzy @tyaaaacw @ayinnisa @ayuayu2x @glori4valentine (\u02d8\u2323\u02d8)\u03b5\u02d8)",
        "to_user": null,
        "to_user_id": 0,
        "to_user_id_str": "0",
        "to_user_name": null
    },
    {
        "created_at": "Wed, 02 Jan 2013 11:43:28 +0000",
        "from_user": "dougshepherd1",
        "from_user_id": 325897505,
        "from_user_id_str": "325897505",
        "from_user_name": "Doug Shepherd",
        "geo": null,
        "id": 286437550229434368,
        "id_str": "286437550229434368",
        "iso_language_code": "en",
        "metadata": {
            "result_type": "recent"
        },
        "profile_image_url": "http:\/\/a0.twimg.com\/profile_images\/1420764658\/dougandro_normal.jpg",
        "profile_image_url_https": "https:\/\/si0.twimg.com\/profile_images\/1420764658\/dougandro_normal.jpg",
        "source": "<a href="http:\/\/twitterfeed.com">twitterfeed<\/a>",
        "text": "Title Boxing Club 'Sweat Factory' Open For New Year's Resolution Help: When Ken Greer accidentally clicked a but... http:\/\/t.co\/RZ0Eim48",
        "to_user": null,
        "to_user_id": 0,
        "to_user_id_str": "0",
        "to_user_name": null
    },
    {
        "created_at": "Wed, 02 Jan 2013 11:43:28 +0000",
        "from_user": "a1a2a2a3a4",
        "from_user_id": 935634619,
        "from_user_id_str": "935634619",
        "from_user_name": "\uc720\uc2b9\uc6b0\uc870\uc73c\ub2e4Vv",
        "geo": null,
        "id": 286437550145556480,
        "id_str": "286437550145556480",
        "iso_language_code": "ko",
        "metadata": {
            "result_type": "recent"
        },
        "profile_image_url": "http:\/\/a0.twimg.com\/profile_images\/2898657882\/6a71600348f1d4136866a86e267722d5_normal.png",
        "profile_image_url_https": "https:\/\/si0.twimg.com\/profile_images\/2898657882\/6a71600348f1d4136866a86e267722d5_normal.png",
        "source": "<a href="http:\/\/twitter.com\/download\/android">Twitter for Android<\/a>",
        "text": "RT @seungu97: @PutriNorizah \ubbf8\uc548\ud574\uc694\ud478\ud2b8\ub9aci was in a hurry to write you back happy new year \ud478\ud2b8\ub9ac\ub108\ubb34\ucc29\ud574\uc694\uce74\ud1a1\ud574\uc694",
        "to_user": null,
        "to_user_id": 0,
        "to_user_id_str": "0",
        "to_user_name": null
    },
    {
        "created_at": "Wed, 02 Jan 2013 11:43:28 +0000",
        "from_user": "RaymondMarvinP",
        "from_user_id": 153311501,
        "from_user_id_str": "153311501",
        "from_user_name": "Raymond Pattipeilohy",
        "geo": null,
        "id": 286437550116184064,
        "id_str": "286437550116184064",
        "iso_language_code": "en",
        "metadata": {
            "result_type": "recent"
        },
        "profile_image_url": "http:\/\/a0.twimg.com\/profile_images\/3054427884\/86a9053b8bb8530cb31a730d6895abc3_normal.jpeg",
        "profile_image_url_https": "https:\/\/si0.twimg.com\/profile_images\/3054427884\/86a9053b8bb8530cb31a730d6895abc3_normal.jpeg",
        "source": "<a href="https:\/\/embr.in">embr<\/a>",
        "text": "Happy new year adk :D @khunkromo",
        "to_user": null,
        "to_user_id": 0,
        "to_user_id_str": "0",
        "to_user_name": null
    },
    {
        "created_at": "Wed, 02 Jan 2013 11:43:28 +0000",
        "from_user": "Nellyestao",
        "from_user_id": 401253041,
        "from_user_id_str": "401253041",
        "from_user_name": "Nelly Estaorina",
        "geo": null,
        "id": 286437549428318209,
        "id_str": "286437549428318209",
        "iso_language_code": "en",
        "metadata": {
            "result_type": "recent"
        },
        "profile_image_url": "http:\/\/a0.twimg.com\/profile_images\/3012999534\/2e73bf044ef0282ab1829d9308609f8b_normal.jpeg",
        "profile_image_url_https": "https:\/\/si0.twimg.com\/profile_images\/3012999534\/2e73bf044ef0282ab1829d9308609f8b_normal.jpeg",
        "source": "<a href="http:\/\/blackberry.com\/twitter">Twitter for BlackBerry\u00ae<\/a>",
        "text": "RT @mutiaraulia: Happy New Year 2013 for UJP14\u263a\u2661 . Make it better! Better than 2012! Success for our training! And keep never remedial alone",
        "to_user": null,
        "to_user_id": 0,
        "to_user_id_str": "0",
        "to_user_name": null
    },
    {
        "created_at": "Wed, 02 Jan 2013 11:43:28 +0000",
        "from_user": "katiee_douglas",
        "from_user_id": 231021947,
        "from_user_id_str": "231021947",
        "from_user_name": "Katie Douglas X",
        "geo": null,
        "id": 286437549407346688,
        "id_str": "286437549407346688",
        "iso_language_code": "en",
        "metadata": {
            "result_type": "recent"
        },
        "profile_image_url": "http:\/\/a0.twimg.com\/profile_images\/3049930519\/be6f7dd5d68c199df4c5befa121260d2_normal.jpeg",
        "profile_image_url_https": "https:\/\/si0.twimg.com\/profile_images\/3049930519\/be6f7dd5d68c199df4c5befa121260d2_normal.jpeg",
        "source": "<a href="http:\/\/twitter.com\/download\/iphone">Twitter for iPhone<\/a>",
        "text": "RT @CalvinTrever: Didn't sleep on new year, only slept last night so now I feel like f***ing s**t",
        "to_user": null,
        "to_user_id": 0,
        "to_user_id_str": "0",
        "to_user_name": null
    },
    {
        "created_at": "Wed, 02 Jan 2013 11:43:28 +0000",
        "from_user": "hico2",
        "from_user_id": 205687874,
        "from_user_id_str": "205687874",
        "from_user_name": "hico\u00b2",
        "geo": null,
        "id": 286437549273124864,
        "id_str": "286437549273124864",
        "iso_language_code": "ja",
        "metadata": {
            "result_type": "recent"
        },
        "profile_image_url": "http:\/\/a0.twimg.com\/profile_images\/1341047299\/DSC_4069_normal.JPG",
        "profile_image_url_https": "https:\/\/si0.twimg.com\/profile_images\/1341047299\/DSC_4069_normal.JPG",
        "source": "<a href="http:\/\/twitter.com\/">web<\/a>",
        "text": "hico\u00b2\u30d6\u30ed\u30b0\u66f4\u65b0\u3057\u3083\u3063\u3059\uff01\u300eA HAPPY NEW YEAR\uff01\u301c\u7b11\u9580\u6765\u798f2013\u301c\uff01\uff01\u300f\nhttp:\/\/t.co\/Wk2lSVZJ",
        "to_user": null,
        "to_user_id": 0,
        "to_user_id_str": "0",
        "to_user_name": null
    },
    {
        "created_at": "Wed, 02 Jan 2013 11:43:28 +0000",
        "from_user": "saionjikyua",
        "from_user_id": 154139162,
        "from_user_id_str": "154139162",
        "from_user_name": "\u304d\u3085\u3042K\u3000",
        "geo": null,
        "id": 286437549222817793,
        "id_str": "286437549222817793",
        "iso_language_code": "ja",
        "metadata": {
            "result_type": "recent"
        },
        "profile_image_url": "http:\/\/a0.twimg.com\/profile_images\/3011151755\/914f0441f5cca86a822248ba84b125f0_normal.jpeg",
        "profile_image_url_https": "https:\/\/si0.twimg.com\/profile_images\/3011151755\/914f0441f5cca86a822248ba84b125f0_normal.jpeg",
        "source": "<a href="https:\/\/mobile.twitter.com">Mobile Web (M2)<\/a>",
        "text": "kyua HAPPY NEW YEAR!\"!!!!!\n\n\u897f\u5712\u5bfa\u308e\u305f\u3060\u3044\u307e\u65e5\u672c\u306b\u5e30\u5b85\u3057\u305f\u30ad\u30e5\u30a2\u2605",
        "to_user": null,
        "to_user_id": 0,
        "to_user_id_str": "0",
        "to_user_name": null
    },
    {
        "created_at": "Wed, 02 Jan 2013 11:43:28 +0000",
        "from_user": "_GiuliaB_",
        "from_user_id": 161635884,
        "from_user_id_str": "161635884",
        "from_user_name": "Giulia Anna \u2665",
        "geo": null,
        "id": 286437548652376064,
        "id_str": "286437548652376064",
        "iso_language_code": "en",
        "metadata": {
            "result_type": "recent"
        },
        "profile_image_url": "http:\/\/a0.twimg.com\/profile_images\/2396882564\/9ufvgyxf6hacuxl2znf7_normal.png",
        "profile_image_url_https": "https:\/\/si0.twimg.com\/profile_images\/2396882564\/9ufvgyxf6hacuxl2znf7_normal.png",
        "source": "<a href="http:\/\/www.hootsuite.com">HootSuite<\/a>",
        "text": "New Year's #resolutions http:\/\/t.co\/UGdMHPjf",
        "to_user": null,
        "to_user_id": 0,
        "to_user_id_str": "0",
        "to_user_name": null
    },
    {
        "created_at": "Wed, 02 Jan 2013 11:43:27 +0000",
        "from_user": "WashingtonTroom",
        "from_user_id": 148635962,
        "from_user_id_str": "148635962",
        "from_user_name": "Washington Tea Room",
        "geo": null,
        "id": 286437548501377024,
        "id_str": "286437548501377024",
        "iso_language_code": "en",
        "metadata": {
            "result_type": "recent"
        },
        "profile_image_url": "http:\/\/a0.twimg.com\/profile_images\/2211531785\/washington_tea_room_sign_1_normal.jpg",
        "profile_image_url_https": "https:\/\/si0.twimg.com\/profile_images\/2211531785\/washington_tea_room_sign_1_normal.jpg",
        "source": "<a href="http:\/\/itunes.apple.com\/us\/app\/twitter\/id409789998?mt=12">Twitter for Mac<\/a>",
        "text": "Looking for a new year challenge? Why not volunteer to help for just a few hours each month for a local community project, very rewarding!",
        "to_user": null,
        "to_user_id": 0,
        "to_user_id_str": "0",
        "to_user_name": null
    },
    {
        "created_at": "Wed, 02 Jan 2013 11:43:27 +0000",
        "from_user": "RosalynOlson11",
        "from_user_id": 1054839787,
        "from_user_id_str": "1054839787",
        "from_user_name": "Rosalyn Olson",
        "geo": null,
        "id": 286437548396527616,
        "id_str": "286437548396527616",
        "iso_language_code": "en",
        "metadata": {
            "result_type": "recent"
        },
        "profile_image_url": "http:\/\/a0.twimg.com\/profile_images\/3054422061\/cbb2cb2f2af48d452945aca59a66b073_normal.jpeg",
        "profile_image_url_https": "https:\/\/si0.twimg.com\/profile_images\/3054422061\/cbb2cb2f2af48d452945aca59a66b073_normal.jpeg",
        "source": "<a href="https:\/\/mobile.twitter.com">Mobile Web (M2)<\/a>",
        "text": "#job Anyone actually make this happen? http:\/\/t.co\/RkHSUrOk",
        "to_user": null,
        "to_user_id": 0,
        "to_user_id_str": "0",
        "to_user_name": null
    },
    {
        "created_at": "Wed, 02 Jan 2013 11:43:27 +0000",
        "from_user": "BumperArmor",
        "from_user_id": 1021423430,
        "from_user_id_str": "1021423430",
        "from_user_name": "Bumper Armor",
        "geo": null,
        "id": 286437548350377984,
        "id_str": "286437548350377984",
        "iso_language_code": "en",
        "metadata": {
            "result_type": "recent"
        },
        "profile_image_url": "http:\/\/a0.twimg.com\/profile_images\/2993704676\/0647b39064b4ed7147be4a061e910bc3_normal.jpeg",
        "profile_image_url_https": "https:\/\/si0.twimg.com\/profile_images\/2993704676\/0647b39064b4ed7147be4a061e910bc3_normal.jpeg",
        "source": "<a href="http:\/\/twitter.com\/">web<\/a>",
        "text": "How was the New Year Celebration??",
        "to_user": null,
        "to_user_id": 0,
        "to_user_id_str": "0",
        "to_user_name": null
    }],
    "results_per_page": 15,
    "since_id": 0,
    "since_id_str": "0"
}

我正在使用以下java程序来解析json文件

package jsonparser;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
import com.google.gson.JsonParser;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.util.Iterator;
import java.util.Map.Entry;
public class BasicGenGson {

     final private String path = "C:/json/"; //set directory path
        private JsonParser parser = new JsonParser();
        private int count = -1;

        public static void main(String[] args) {
            BasicGenGson read = new BasicGenGson();
            read.sendJSONFile();
        }

        //send json files to read one by one
        private void sendJSONFile() {

            File[] jsonfiles = getJSONFiles();

            if (jsonfiles.length > 0) {
                for (int i = 0; i <= count; i++) {

                    try {
                        //prints json file names
                        System.out.println("File: \t" + jsonfiles[i]);
                        JsonElement jsonElement = parser.parse(new FileReader(jsonfiles[i]));
                        JsonObject jsonObject = jsonElement.getAsJsonObject();
                        readJSONFile(jsonObject);
                    }
                    catch (FileNotFoundException e) {
                        System.out.println(e.getMessage());
                        //e.getStackTrace();
                    }
                    catch (IOException e) {
                        System.out.println(e.getMessage());
                        //e.getStackTrace();
                    }
                    catch (Exception e) {
                        System.out.println(e.getMessage());
                        //e.getStackTrace();
                    }

                }
            }
        }

        //read a complete json file
        private void readJSONFile(JsonObject jsonObject) {

            for (Entry<String, JsonElement> entry : jsonObject.entrySet()) {

                String key = entry.getKey();
                JsonElement value = entry.getValue();

                if (value.isJsonObject()) {
                    readJSONFile(value.getAsJsonObject());
                }
                else if (value.isJsonArray()) {
                     JsonArray jsonArray = value.getAsJsonArray();

                     if (jsonArray.size() == 1) {
                        readJSONFile((JsonObject) jsonArray.get(0));
                    }
                     else {
                        //prints json array name
                        System.out.println(key);
                        Iterator<JsonElement> msg = jsonArray.iterator();
                        while (msg.hasNext()) {
                            ////prints json array values
                            //System.out.println(msg.next());
                            /*******************************************/
                            if (msg.next().isJsonObject()) {
                                readJSONFile(msg.next().getAsJsonObject());
                            }

                            /***********************************************/

                        }
                    }
                }
                else {
                    ////prints json object's keys and values
                    if (key.equals("from_user")|| key.equals("text") ) {
                        System.out.println(key + " - " + value);

                    }
//                  System.out.println(key + " - " + value);

                }
            }
        }

        //get only .json files from a directory
        private File[] getJSONFiles() {

            File folder = new File(path);
            File[] files = folder.listFiles();
            File[] jsonfiles = new File[files.length];

            for (int i = 0; i < files.length; i++) {

                if (files[i].isFile()) {
                    if (files[i].getName().endsWith(".json") || files[i].getName().endsWith(".JSON")) {
                        jsonfiles[++count] = files[i];
                    }
                }
            }

            return files;
        }

}

我需要提取“from_user”和“text”,但我没有获取所有字段......在几个值之后,它的打印为空。以下是输出

File:   C:\json\NewYear.json
results
from_user - "ToddBuell"
text - "Fiscal cliff deal gives markets relief in New Year. \"Super Mario\" has averted euro zone crisis.Things look good for now, but will it last?"
from_user - "ayinnisa"
text - "Happy nu year too my bicih :* RT @ThataMarsya: Happy new year couzy @tyaaaacw @ayinnisa @ayuayu2x @glori4valentine (???)??)"
from_user - "a1a2a2a3a4"
text - "RT @seungu97: @PutriNorizah ???????i was in a hurry to write you back happy new year ????????????"
from_user - "Nellyestao"
text - "RT @mutiaraulia: Happy New Year 2013 for UJP14?? . Make it better! Better than 2012! Success for our training! And keep never remedial alone"
from_user - "hico2"
text - "hico²???????????A HAPPY NEW YEAR??????2013????\nhttp://t.co/Wk2lSVZJ"
from_user - "_GiuliaB_"
text - "New Year's #resolutions http://t.co/UGdMHPjf"
from_user - "RosalynOlson11"
text - "#job Anyone actually make this happen? http://t.co/RkHSUrOk"
null

请帮忙...谢谢

最佳答案

出于同样的原因,您只打印 JSON 数组中的所有其他条目。

if (msg.next().isJsonObject()) {
    readJSONFile(msg.next().getAsJsonObject());
}

您正在调用 Iteratornext() 方法两次。第一次调用它时,您将丢弃返回的对象。最后,第二次调用它时,它会返回 null,因为数组中没有可供返回的对象。

关于java - java中的GSON解析器打印null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14158399/

相关文章:

javascript - 如何将 JSON 数据导入 Google 表格?

java - 用 Java 设计智能自定义类 csv 解析器

java - 是否有一个好的 XML 解析器可以对 XML 文件进行光扫描以获取元素的字节偏移量?

java - 无法让微调器在 Android Studio 中工作

Java/Swing : Obtain Window/JFrame from inside a JPanel

json - 为什么我的json代码给出了Post实例

在C中将包含本地时间的字符串转换为UTC

java - 使用来自另一个异常的堆栈跟踪初始化异常?

java - 创建一个方形的二维数组

python - 将 bool 字符串值映射到 JSON 中的 true/false