2013-05-16 42 views
6

Ok, tôi tự hỏi điều này có thể khá đơn giản và ngu ngốc nhưng sau một thời gian chiến đấu với tình huống tôi không biết chuyện gì đang xảy ra.Gson, JsonElement, So sánh chuỗi trong Java

Tôi đang sử dụng Gson để xử lý một số phần tử JSON. Một nơi nào đó trong mã của tôi tôi nhận được một trong các JsonElements của một JsonObject như là một String và tôi so sánh nó với một String. Theo như tôi có thể thấy cả hai đều bằng nhau nhưng khi so sánh tôi luôn luôn nhận được sai. Đây là đoạn trích.

JsonArray arr; 
    JsonObject jsonobj; 
    JsonElement model_elem; 
    String STUPID_STRING = "bla bla bla"; 

    // Previously we initializes and fill arr, it doesn't matter how... I hope 
    jsonobj = arr.get(0).getAsJsonObject(); 
    model_elem = jsonobj.get("coolname"); 
    if (model_elem.toString().equals(STUPID_STRING)) { 
     ... 

Nó không bao giờ nằm ​​trong câu lệnh if.

arr có phần tử ở chỉ mục 0, jsonobj có trường có tên "coolname" và nếu tôi println model_elem tôi nhận được "bla bla bla" (giống như STUPID_STRING). Tôi đã thử bằng() và cũng compareTo() == 0.

Tôi không thể hiểu được điều gì đang xảy ra ở đây, có ai biết không? :-S.

Xin cảm ơn trước.

Trả lời

13

Tôi tin rằng bạn cần sử dụng getAsString() với GSON. toString() sẽ thêm dấu ngoặc kép!

+0

OMG GUYS !! Tôi đã phát hiện ra vấn đề !. – Ole

+0

Tôi cũng đã ở đó. nhìn chằm chằm vào hai chuỗi bằng nhau, bạn không nhận thấy dấu ngoặc kép thêm. :) –

+0

bạn hoàn toàn đúng, đó là vấn đề ... Tôi không biết làm thế nào để nói ... mà nên được ghi lại trong JsonElement.toString() và JsonElement.getAsString() xDD – Ole