Je travaille actuellement sur une application Android qui utilise "JSON" comme réponse du serveur. Habituellement, je travaille sur la réponse JSON. Mais maintenant, j’ai un problème avec logcat, Si la chaîne de réponse JSON est très longue, supérieure à x caractère (je ne sais pas exactement combien représente la chaîne maximale pouvant être affichée par logcat), la chaîne JSON est manquante.
Bien que cela puisse toujours me donner la sortie, j'ai besoin des informations sur la chaîne JSON transmise par le serveur.
Est-il possible d'afficher plus de chaîne sur logcat? Comme augmenter la mémoire tampon ou tout paramètre que je pourrais utiliser pour augmenter la longueur de chaîne maximale pouvant être affichée par logcat.
Moche mais ça fait le boulot:
public static void longInfo(String str) {
if(str.length() > 4000) {
Log.i(TAG, str.substring(0, 4000));
longInfo(str.substring(4000));
} else
Log.i(TAG, str);
}
if(xml.length() > 4000) {
for(int i=0;i<xml.length();i+=4000){
if(i+4000<xml.length())
Log.i("rescounter"+i,xml.substring(i, i+4000));
else
Log.i("rescounter"+i,xml.substring(i, xml.length()));
}
} else
Log.i("resinfo",xml);
Voici comment je l'ai fait.
Certaines de nos API RESTful renvoient des réponses JSON très longues. Voici la méthode qui les formate pour LogCat:
private static final int LOGCAT_MAX_LENGTH = 3950;
...
private void logLongJsonStringIfDebuggable(String s) {
if (BuildConfig.DEBUG) {
while (s.length() > LOGCAT_MAX_LENGTH) {
int substringIndex = s.lastIndexOf(",", LOGCAT_MAX_LENGTH);
if (substringIndex == -1)
substringIndex = LOGCAT_MAX_LENGTH;
Log.d(TAG, s.substring(0, substringIndex));
s = s.substring(substringIndex).trim();
}
Log.d(TAG, s);
}
}
si vous n'utilisez pas Eclipse ou @ zanne, la réponse ne fonctionne pas pour vous. Je ne peux penser qu'à deux solutions:
edit: Une autre possibilité: écrivez le fichier JSON dans un fichier de la carte SD comme un journal, puis récupérez le fichier lorsque vous souhaitez vérifier la réponse.
pourquoi ne pas utiliser logcat à partir d'une ligne de commande?
Je doute que ce soit ce que vous attendez, mais pourquoi ne pas essayer?
émettre la commande
./adb -e logcat
depuis le répertoire qui a adb. ceci est pour l'émulateur. remplacez -e
par -d
pour un périphérique