オブジェクトの配列を含む以下の JSON ストリームを解析できません。ここでは、簡略化のためにオブジェクトを 1 つだけ追加しました。
{
"status": true,
"categories": [
{
"obj_cat_id": "26",
"session_user": "212233379",
"timestamp": "2011-10-30 04:34:53"
}
]
}
私が試したこと:
try {
JsonFactory f = new JsonFactory();
JsonParser jp = f.createJsonParser(is);
jp.nextToken(); /* START_OBJECT */
while (jp.nextToken() != JsonToken.END_OBJECT) {
if ("status".equals(jp.getCurrentName())) {
jp.nextToken(); /* VALUE_TRUE */
status = jp.getText();
Constants.showLog("Status", jp.getText());
} else if ("categories".equals(jp.getCurrentName())) {
//jp.nextToken();
while (jp.nextToken() != JsonToken.END_ARRAY) {
//jp.nextToken();
while (jp.nextToken() != JsonToken.END_OBJECT) {
String namefieldOne = jp.getText();
Constants.showLog(TAG, namefieldOne);
}
}
}
}
jp.close();
主な問題は、現在のトークンが START_ARRAY である jp.nextToken を実行すると、END_ARRAY に直接移動し、そのオブジェクト値にアクセスできないことです。
効率を高めるために、Jackson Streaming パーサーを使用しています。