16 Mayıs 2010, Pazar
Nasıl ayrıştırma Java HTTPResponse gelen JSON mı?
Bir web isteği için HttpResponse nesne sadece yaptım. Yanıt JSON biçiminde, bunu ayrıştırmak lazım. Saçma sapan, karmaşık bir şekilde yapabilirim, ama daha iyi bir yolu olmalı gibi görünüyor.
Gerçekten yapabildiğim en iyisi bu mu?
HttpResponse response; // some response object
Reader in = new BufferedReader(
new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
StringBuilder builder= new StringBuilder();
char[] buf = new char[1000];
int l = 0;
while (l >= 0) {
builder.append(buf, 0, l);
l = in.read(buf);
}
JSONTokener tokener = new JSONTokener( builder.toString() );
JSONArray finalResult = new JSONArray( tokener );
Herhangi bir fark yaratan Android ben.
CEVAP
16 Mayıs 2010, Pazar
Daha etkin bir şekilde yapılabilecek iki şey var
- Daha hızlı ve küçük kardeş olduğu için
StringBuffer
yerineStringBuilder
kullanın. BufferedReader#readLine()
char ile char okumak yerine satır satır okumak için kullanın.
HttpResponse response; // some response object
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
StringBuilder builder = new StringBuilder();
for (String line = null; (line = reader.readLine()) != null;) {
builder.append(line).append("\n");
}
JSONTokener tokener = new JSONTokener(builder.toString());
JSONArray finalResult = new JSONArray(tokener);
Eğer JSON aslında tek bir satır, sonra da döngü kaldırmak ve üretici.
HttpResponse response; // some response object
BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(), "UTF-8"));
String json = reader.readLine();
JSONTokener tokener = new JSONTokener(json);
JSONArray finalResult = new JSONArray(tokener);
Bunu Paylaş:
Nasıl Java JSON ayrıştırma...
Nasıl bir Java Sunucu uygulaması gelen...
Nasıl ayrıştırma kullanarak Node.js JS...
Nasıl HttpResponse zaman aşımı ayarlam...
Nasıl Ruby on Rails ile JSON ayrıştırm...