如何 return 我的字符串值带有空格
How to return my string value with whitespace
如何修改我的 main class 以便我可以在不丢失空格的情况下接收值?
这是我主要的一部分 class:
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());
}
最后一行打印没有空格的值。例如,字符串 "Black and yellow"
的值将更改为 "Blackandyellow"
.
如果您查看 Scanner.java class,您会看到白色 space 被视为换行符。
public Scanner(InputStream source) {
this(new InputStreamReader(source), WHITESPACE_PATTERN);
}
您需要将行分隔符设置为
s.useDelimiter(System.getProperty("line.separator"));
我能够复制并解决问题,下面是代码 -
JSON
{
name:"Stack-overflow",
url:"http://www.stack-overflow .com"
}
这是 class
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);
}
}
我认为您的问题来自于使用扫描仪,因为它可能会修剪空格。正如您已经在使用的那样,一些 Google 库 (Gson),我也会使用 Google 的番石榴,它的文件 class 有一个 toString() 方法,可以读取整个文件到一个字符串:
如何修改我的 main class 以便我可以在不丢失空格的情况下接收值?
这是我主要的一部分 class:
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());
}
最后一行打印没有空格的值。例如,字符串 "Black and yellow"
的值将更改为 "Blackandyellow"
.
如果您查看 Scanner.java class,您会看到白色 space 被视为换行符。
public Scanner(InputStream source) {
this(new InputStreamReader(source), WHITESPACE_PATTERN);
}
您需要将行分隔符设置为
s.useDelimiter(System.getProperty("line.separator"));
我能够复制并解决问题,下面是代码 -
JSON
{
name:"Stack-overflow",
url:"http://www.stack-overflow .com"
}
这是 class
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);
}
}
我认为您的问题来自于使用扫描仪,因为它可能会修剪空格。正如您已经在使用的那样,一些 Google 库 (Gson),我也会使用 Google 的番石榴,它的文件 class 有一个 toString() 方法,可以读取整个文件到一个字符串: