1

これは私の JSON ソースです。トークンをスキップretweeted_statusして次のトークンに移動できますかcontributors(トークン内のretweeted_statusトークンではありません)。

現在、次のコードがretweeted_statusオブジェクトに入り、それぞれを解析しています。

jp = jsonF.createJsonParser(strLine);
if (jp.nextToken() != JsonToken.START_OBJECT) {
        throw new IOException("Expected data to start with an Object");
    }
    TwitterEntry result = new TwitterEntry();
    // Iterate over object fields:
    while (jp.nextToken() != JsonToken.END_OBJECT) {
        String fieldName = jp.getCurrentName();
        // Let's move to value
        jp.nextToken();
        if (fieldName.equals("id")) {
            result.setId(jp.getLongValue());
        } else if (fieldName.equals("text")) {
            result.setText(jp.getText());
        } else if (fieldName.equals("fromUserId")) {
            result.setFromUserId(jp.getIntValue());
        } else if (fieldName.equals("toUserId")) {
            result.setToUserId(jp.getIntValue());
        } else if (fieldName.equals("languageCode")) {
            result.setLanguageCode(jp.getText());
        } else { // ignore, or signal error?
            //Ignoring unrecognized fields
            //throw new IOException("Unrecognized field '"+fieldName+"'");
        }
    }
    jp.close();
4

1 に答える 1

3

else ステートメントで jp.skipChildren() を使用できるはずです。

すなわち

...
else {
   jp.nextToken();  // go to value token
   jp.skipChildren();  // skip if object or array
}
...
于 2014-04-23T23:52:37.967 に答える