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

  • Digital Bounds

    Digital Boun

    19 Temmuz 2013
  • Jonathan Flavell

    Jonathan Fla

    1 HAZİRAN 2006
  • Liam Underwood

    Liam Underwo

    19 Mayıs 2009