2015-07-06 19 views
5

Come posso modificare la mia classe principale in modo che possa ricevere valori senza perdere lo spazio bianco?Come restituire il valore della stringa con spazi vuoti

Ecco una parte della mia classe principale:

StringBuilder sb = new StringBuilder(); 
Scanner s = new Scanner(new FileReader(new File("C:/User/waithaka/Documents//duka.json"))); 
while (s.hasNext()) { 
    sb.append(s.next()); 
} 
s.close(); 

GsonBuilder gsonBuilder = new GsonBuilder(); 
Gson gson = gsonBuilder.create(); 

String jstring = sb.toString(); 
Result results = gson.fromJson(jstring, Result.class); 
List<data> dat = response.getData(); 
for (data data : dat) { 
    System.out.println("The item is " + data.getItem()); 
} 

L'ultima riga stampa i valori senza spazi. Ad esempio, un valore con la stringa "Black and yellow" verrà modificato in "Blackandyellow".

+0

Credo che la vostra problema sta nell'usare 'Scanner' per leggere nel tuo file. 'Scanner' restituisce" parole "- stringhe separate da spazi bianchi. Lo spazio bianco è omesso. – Arkadiy

+0

grazie mille, ha funzionato –

risposta

2

Penso che il tuo problema derivi dall'utilizzo dello Scanner, poiché potrebbe essere il taglio degli spazi bianchi. Come si sta già utilizzando, alcune librerie di Google (GSON), vorrei anche usare guava di Google, la sua classe di file ha un metodo toString() che leggerà un intero file in una stringa:

Files.toString()

3

Se si esamina la classe Scanner.java, è possibile visualizzare lo spazio bianco come nuovi caratteri di linea.

public Scanner(InputStream source) { 
     this(new InputStreamReader(source), WHITESPACE_PATTERN); 
    } 

è necessario impostare separatore di linea come

s.useDelimiter(System.getProperty("line.separator")); 

sono stato in grado di replicare e risolvere il problema, al di sotto è il codice -

JSON

{ 
name:"Stack-overflow", 
url:"http://www.stack-overflow .com" 
} 

Ed ecco la classe

public class GsonTest { 

    public static void main(String[] args) throws FileNotFoundException { 
     StringBuilder sb = new StringBuilder(); 

     Scanner s = new Scanner(new FileReader(new File(
       "/Users/chatar/Documents/dev/projects/stack-overflow/stack-overflow/bin/C:/User/waithaka/Documents/duka.json"))); 

     s.useDelimiter(System.getProperty("line.separator")); 
     while (s.hasNext()) { 
      String nxt = s.next(); 
      sb.append(nxt); 
     } 
     s.close(); 

     GsonBuilder gsonBuilder = new GsonBuilder(); 
     Gson gson = gsonBuilder.create(); 

     String jstring = sb.toString(); 
     Result results = gson.fromJson(jstring, Result.class); 

     System.out.println("The item is " + results); 
    } 
} 
+1

puoi accettare più di una risposta se tutte funzionano per te! – TheCodingFrog