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

  • LinusTechTips

    LinusTechTip

    25 Kasım 2008
  • Phlearn Photoshop and Photography Tutorials

    Phlearn Phot

    11 EKİM 2011
  • Rugiagialia

    Rugiagialia

    1 Ocak 2008