2014-12-09 2 views
2

GSON을 사용하여 두 개의 JSON 문자열을 비교하는 올바른 방법은 무엇입니까?GSON을 사용하여 두 개의 JSON 문자열을 비교하는 올바른 방법은 무엇입니까?

boolean match = false; 
String json2 = "some json string"; 
String json1 = "another json string"; 
JsonParser parser = new JsonParser(); 
JsonElement t2 = parser.parse(json2); 
JsonElement t1 = parser.parse(json1); 
match = t2.equals(t1); // compare two json strings 
if (match) { 
    // do something 
} 

위의 코드는 두 가지 JSON 비교에 적합한 것으로 보입니까?

답변

1

당신은 당신이 제공하는 샘플 코드를 실행 시도? 당신이 동일한 JSON 문자열을 사용하지만 키의 순서를 재 배열하면, 당신은 당신의 대답을 찾을 수 있습니다 ...

여기

샘플 코드입니다 : 당신은 말을 의미

String json1=" { \"name\" :\"ABC\",\"city\":\"XYZ\"}"; 
String json2=" { \"city\":\"XYZ\", \"name\" :\"ABC\"}"; 

JsonParser parser = new JsonParser(); 
JsonElement t2 = parser.parse(json2); 
JsonElement t1 = parser.parse(json1); // returns true 
+0

, 내가 무엇을하고 있는가하는 것은 맞다 ? – john

+0

@ user2809564 직접 테스트 해 보시지 않겠습니까? – Braj

+0

나는 그것을 테스트하고 잘 작동합니다. 내 이해가 옳은지 아닌지를 다시 한 번 확인하고 싶었습니다. – john

-1

정말로 문자열 - 문자열 또는 콘텐츠 - 내용 비교를 의미합니까? 귀하의 콘텐츠 - 투 - 내용을 비교하는 경우

당신이 문자열에 문자열을 비교하는 경우, 당신은

int difference=aStr.compareTo(bStr); 

를 사용해야합니다, 당신은 POJO로 JSON 변환 GSON를 사용하고 equalsTo 방법을 구현해야합니다 그 POJO에.

는 예컨대 :

public class City implements Comparable<City>{ 
    public String name; 
    public int population; 

    public int compareTo(City b){ 
     return name.compareTo(b.name)+population-b.population; 
    } 
} 

Gson g=new Gson(); 
City a=g.fromJson(jsonA, City.class); 
City b=g.fromJson(jsonB, City.class); 

int difference=a.compareTo(b); 
관련 문제