SORU
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

  1. Daha hızlı ve küçük kardeş olduğu için StringBuffer yerine StringBuilder kullanın.
  2. 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ş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • jagadambarecords

    jagadambarec

    13 AĞUSTOS 2008
  • RayperEnglishKnight

    RayperEnglis

    24 Kasım 2008
  • Techmoan

    Techmoan

    31 Mayıs 2009