Autore Topic: Limite dimensione stringa ricevuta da evaluateJavascript  (Letto 429 volte)

Offline FaBrYx

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Google+
    • fabrizio-cacicia-61616295
    • fabryx1992
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6 Edge + Samsung Galaxy Note Pro 12.2
  • Sistema operativo:
    Mac OS
Limite dimensione stringa ricevuta da evaluateJavascript
« il: 01 Aprile 2016, 00:36:39 CEST »
0
Buonasera a tutti, è la prima volta che scrivo per chiedere qualcosa in questo forum. Non so se questa sia la sezione giusta, ho scelto questa per esclusione, avvisatemi se ho commesso un errore.

Descrivo il mio problema:
Lancio del codice Javascript mediante il metodo evaluateJavascript di una WebView; il codice Javascript (testato già esternamente all'app Android) mi genera una stringa 297000 caratteri, scomposta in un array di 297 elementi contenenti stringhe da 1000 caratteri ciascuna. Ricostruendo l'array all'interno del codice Java utilizzando un JSONArray.
Il problema è che il JSONArray risulta avere solamente 7 elementi.
Non riuscendo a capire il problema, suppongo che ci sia un limite di caratteri da poter ricevere da questa chiamata.

Qualcuno sa se esiste questo limite? Sbaglio qualcos'altro?

Se servono riferimenti al codice posso tranquillamente fornirli.

P.S. se può servire, la stringa da 297000 caratteri rappresenta la codifica Base64 di un'immagine, che dovrei ricostruire all'interno dell'applicazione Android.

Offline lore.cioni

  • Nuovo arrivato
  • *
  • Post: 25
  • Respect: 0
    • Github
    • cionilorenzo
    • lorecioni
    • Mostra profilo
  • Dispositivo Android:
    Motorola Moto G
  • Play Store ID:
    Lorenzo Cioni
  • Sistema operativo:
    Mac OSX 10.11
Re:Limite dimensione stringa ricevuta da evaluateJavascript
« Risposta #1 il: 01 Aprile 2016, 02:43:47 CEST »
0
Per manipolare file json di grandi dimensioni ti consiglio di ricorrere all'uso di una libreria esterna, come ad esempio https://github.com/google/gson.

Gson ti consente di convertire oggetti Java in json e viceversa (utilizzando i due metodi toJson() e fromJson()). Non dovrebbe essere un problema creare ad esempio una lista di stringhe con

Codice (Java): [Seleziona]
Gson gson = new Gson();
ArrayList<String> list = new ArrayList<String>(Arrays.asList(gson.fromJson(json, String[].class)));

Un'altra cosa da verificare però è se la stringa contenente il json che ti arriva è effettivamente formattata correttamente come json: puoi verificarlo loggandola a console.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1197
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Limite dimensione stringa ricevuta da evaluateJavascript
« Risposta #2 il: 01 Aprile 2016, 08:07:45 CEST »
0
Ho notato che il log non mostra stringhe enormemente lunghe. Quindi forse hai il json corretto ma non te ne sei accorto

Offline FaBrYx

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Google+
    • fabrizio-cacicia-61616295
    • fabryx1992
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6 Edge + Samsung Galaxy Note Pro 12.2
  • Sistema operativo:
    Mac OS
Re:Limite dimensione stringa ricevuta da evaluateJavascript
« Risposta #3 il: 01 Aprile 2016, 09:10:43 CEST »
0
Il codice funzionava fino a quando la stringa era lunga circa 14000 caratteri. L'immagine veniva ricostruita correttamente. Adesso dovrei trasferire un'immagine più grande.

Offline tonno16

  • Utente storico
  • *****
  • Post: 1197
  • Respect: +58
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:Limite dimensione stringa ricevuta da evaluateJavascript
« Risposta #4 il: 01 Aprile 2016, 09:19:21 CEST »
0
Ho fatto una prova con le mia api. Ho un api che scarica una marea di dati in un jsonarray.
A granid linee un txt con 14 lettere occupa 14 byte sul mio pc. Il file in questione occupa 1.714.856 byte....e quindi sono molto di più di 700000 carateri. Per cui Gson funziona perfettamente

Offline FaBrYx

  • Nuovo arrivato
  • *
  • Post: 5
  • Respect: 0
    • Google+
    • fabrizio-cacicia-61616295
    • fabryx1992
    • Mostra profilo
  • Dispositivo Android:
    Samsung Galaxy S6 Edge + Samsung Galaxy Note Pro 12.2
  • Sistema operativo:
    Mac OS
Re:Limite dimensione stringa ricevuta da evaluateJavascript
« Risposta #5 il: 01 Aprile 2016, 09:25:45 CEST »
0
Non ho provato ad usare la libreria Gson in questa circostanza.
Proverò a breve e posterò eventuali aggiornamenti.
Grazie!