私は、デフォルトのAndroidパーサーよりもはるかに効率的であると聞いて、Jackson JSONパーサーを使用しています。私はここで、このチュートリアルオフ誰がジャクソンのJSONパーサーを使用する方法を学習したい場合は素晴らしいチュートリアルですAndroid Jackson JSON Parser null値
http://www.mkyong.com/java/jackson-streaming-api-to-read-and-write-json/
をそれを使用する方法を学びました。
しかし、私はURLからJavaでデータを正しく解析できるという問題があります。ただし、AndroidでJacksonを使用すると、null値が返されるか、何らかの理由で画面が黒く表示されます。ここから
http://www.javacodegeeks.com/2011/01/android-json-parsing-gson-tutorial.html
私の解析データ方式で次にprivate InputStream retrieveStream(String url) {
DefaultHttpClient client = new DefaultHttpClient();
HttpGet getRequest = new HttpGet(url);
try {
HttpResponse getResponse = client.execute(getRequest);
final int statusCode = getResponse.getStatusLine().getStatusCode();
if (statusCode != HttpStatus.SC_OK) {
Log.w(getClass().getSimpleName(),
"Error " + statusCode + " for URL " + url);
return null;
}
HttpEntity getResponseEntity = getResponse.getEntity();
return getResponseEntity.getContent();
}
catch (IOException e) {
getRequest.abort();
Log.w(getClass().getSimpleName(), "Error for URL " + url, e);
}
return null;
}
InputStream source = retrieveStream(url);
try {
JsonFactory jfactory = new JsonFactory();
JsonParser jParser = jfactory.createJsonParser(source);
その後、私は、データを解析し、私はこのコードを使用していますウェブサイトからデータを取得するために
上にリンクされたチュートリアルに示されています
while (jParser.nextToken() != JsonToken.END_OBJECT) {
String fieldname = jParser.getCurrentName();
if ("Name".equals(fieldname)) {
jParser.nextToken();
this.setName(jParser.getText());
}
if ("Number".equals(fieldname)) {
jParser.nextToken();
this.setNumber(jParser.getText());
}
}
私が使用しているURLは、ジャクソンJSON解析を実行するために使用しているJSONファイルがあるダミーサイトです。
通常のJavaクラスでは、作成したコードを使用してWebサイトからデータを解析でき、正常に動作するため、解析データコードは問題ありません。
私が今見たコードでAndroidでコードを使用しようとすると、ちょっと奇妙な理由で黒い画面が表示されます。マニフェストでインターネットのアクセス許可が有効になっています
私が使ったHTTPコードに問題がありますか?もしそうなら誰かが私にそれをどうやって行うべきかを教えてもらえますかそしてなぜ私は黒い画面を表示しているのですか、なぜそれが表示されるのか分かりません。データの種類に応じて、あなたが得る、あなたが次のトークンとしてEND_OBJECT
を取得しないということは非常に可能です:事前
あなたはアンドロイドがAPIで公式のJSONをサポートしていることを知っています。 。 。 – Mob
私はそれを知っていますが、Jackson JSONははるかに高速であることを意図していますので、私はそれを選択しました – AdamM
@AdamM couhldあなたはどこにエラーがあるのか特定してください – JoxTraex