Java String.equal()在应返回true时返回false

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();

我从服务器获取JSON,然后使用GSON解析JSON。我想确定JSON中的字符串元素是否等于另一个字符串变量。但是,String.equals()在应该返回true时返回false

Java代码:

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");