Java String.equal()在应返回true时返回false
我从服务器获取JSON,然后使用GSON解析JSON。我想确定JSON中的字符串元素是否等于另一个字符串变量。但是,String.equals()在应该返回true时返回false Java代码:Java String.equal()在应返回true时返回false,java,string,gson,Java,String,Gson,我从服务器获取JSON,然后使用GSON解析JSON。我想确定JSON中的字符串元素是否等于另一个字符串变量。但是,String.equals()在应该返回true时返回false Java代码: JsonElement element = parser.parse(response.toString()); if (element.isJsonObject()) { JsonObject data = element.getAsJsonObject();
JsonElement element = parser.parse(response.toString());
if (element.isJsonObject()) {
JsonObject data = element.getAsJsonObject();
JsonArray stud = data.get("students").getAsJsonArray();
for(int i = 0; i < stud.size(); i ++){
String t = stud.get(i).getAsJsonObject().get("StudNum").toString();
System.out.println("t = " + t);
if (t.equals("F02660934")){
System.out.println("equal"); //never prints
}
}
}
是否将“F02660934”与F02660934进行比较,因此返回false
提前谢谢 字符串包含引号,因此需要在if语句中包含引号
if (t.equals("\"F02660934\""))
System.out.println("equals");
尽管您不应该在JsonElement
上使用toString()
。改用getAsString()
有关更多信息,请参见killjoy在评论中推荐的,但是Java正在将
“F02660934”
与F02660934
进行比较,将引号作为字符串的一部分读取。如果使用toString()
,可以通过以下两种方法之一解决此问题:
1) t.equals(“\”F02660934\”)
这会导致t
忽略equals()中的引号
2) t=t.replaceAll(“\”,”)
它从字符串中去掉引号,并将其替换为零,因此当调用equals()
时,t
相当于F02660934
字符串似乎有引号。请尝试t.equals(“\”F02660934\”)
成功了,谢谢@killjoy你能把它作为答案发布吗?这样你就可以获得声誉积分了
if (t.equals("\"F02660934\""))
System.out.println("equals");