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

  • Howard Pinsky

    Howard Pinsk

    6 AĞUSTOS 2006
  • Nightmare2005

    Nightmare200

    14 Ocak 2007
  • NYLON Video

    NYLON Video

    11 Aralık 2006