外部 XML ファイルの解析に JDOM SAX パーサーを使用しています。ただし、同じサーブレットで JSON を解析する必要があります。誰でもSAXに似た解析を提案できますか?
質問する
2471 次
3 に答える
2
Java でGoogle GSONパーサーを使用する必要があります
Gson ユーザー ガイドも参照してください。
于 2012-05-18T18:22:18.453 に答える
2
ジャクソンもあります:
于 2012-05-18T18:25:23.320 に答える
1
GSONでそれを行うことができます:
import java.io.IOException;
import java.math.BigDecimal;
import com.google.gson.stream.JsonReader;
import com.google.gson.stream.JsonToken;
public class JsonProcessor {
public void parse(JsonReader reader) throws IOException {
onStartDocument();
while (true) {
JsonToken token = reader.peek();
switch (token) {
case BEGIN_ARRAY:
reader.beginArray();
onBeginArray();
break;
case END_ARRAY:
reader.endArray();
onEndArray();
break;
case BEGIN_OBJECT:
reader.beginObject();
onBeginObject();
break;
case END_OBJECT:
reader.endObject();
onEndObject();
break;
case NAME:
String name = reader.nextName();
onName(name);
break;
case STRING:
String s = reader.nextString();
onString(s);
break;
case NUMBER:
String n = reader.nextString();
onNumber(new BigDecimal(n));
break;
case BOOLEAN:
boolean b = reader.nextBoolean();
onBoolean(b);
break;
case NULL:
reader.nextNull();
onNull();
break;
case END_DOCUMENT:
onEndDocument();
return;
}
}
}
public void onStartDocument() {
}
public void onBeginObject() {
}
public void onEndObject() {
}
public void onBeginArray() {
}
public void onEndArray() {
}
public void onName(String name) {
}
public void onNumber(BigDecimal n) {
}
public void onString(String s) {
}
public void onNull() {
}
public void onEndDocument() {
}
public void onBoolean(boolean b) {
}
}
注: Android api >= 11 を使用している場合は、次を使用できます。
import android.util.JsonReader;
import android.util.JsonToken;
GSON の代わりにクラス。
于 2013-07-11T16:25:42.920 に答える