Gson이 "<"및 ">"를 유니 코드 이스케이프 시퀀스로 변환하는 것을 피할 수 있습니까?


127

Gson 이 문자열 "<"을 JSON 출력의 유니 코드 이스케이프 시퀀스로 변환하는 것을 알았습니다 . 어떻게 든 이것을 피할 수 있습니까? 아니면 "<"및 ">"와 같은 문자를 항상 JSON에서 이스케이프해야합니까?

인쇄하는이 예제를 고려하십시오 {"s":"\u003c"}. 간단하게 원합니다 {"s":"<"}.

public static void main(String[] args) {
    Gson gson = new GsonBuilder().create();
    System.out.println(gson.toJson(new Foo()));  
}

static class Foo {
    String s = "<";
}

컨텍스트 : 내가 만드는 JSON은 HTML 페이지 또는 JavaScript와 관련이 없습니다. 방금 구조화 된 특정 정보를 다른 소프트웨어 (C로 작성된 장치에 포함)에 전달하는 데 사용됩니다.


2
GSON이 기본적으로 그렇게합니까? 우와 JSON 사양 관점에서 완벽하게 합법적 인 일이지만, 다소 이상한 기본 설정입니다.
StaxMan

3
그래, 나도 놀랐어. 운 좋게 구제책 은 어디를보아야하는지 쉽게 알 수 있습니다. :) 그렇지 않으면 언젠가 경험 한 후에 Gson이 훌륭한 사용자 안내서 와 함께 정말 깨끗하고 멋진 라이브러리임을 알 수 있습니다!
Jonik

6
이것은 "="문자에서도 발생하며 "\ u003d"로 바뀝니다.
Russell Silva

답변:


253

HTML 이스케이프비활성화 해야합니다 .

Gson gson = new GsonBuilder().disableHtmlEscaping().create();

11
왜 기본적으로 켜져 있는지 궁금합니다. JSON은 HTML과 관련이 없습니다. 사양 상태에서만 "및`\`필요가 탈출한다.
Mark Jeronimus

여러분, 저에게는 효과가 없었습니다. ''com.squareup.retrofit2 : retrofit : 2.3.0 ''&& ''com.squareup.retrofit2 : converter-gson : 2.3.0 ''을 사용하고 있습니다. 도와주세요.
Mr Code
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.