Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

Could someone please suggest why this is happening...

I’ve got some code to pretty print some JSON. To do this, I am making use out of the Gson library.

However, while thus usually works well, some characters don’t seem to be displayed properly. Here is a simple piece of code that demonstrates the problem:

//Creating the JSON object, and getting as String:
JsonObject json = new JsonObject();
JsonObject inner = new JsonObject();
inner.addProperty("value", "xpath('hello')");
json.add("root", inner);
System.out.println(json.toString());

//Trying to pretify JSON String:
Gson gson = new GsonBuilder().setPrettyPrinting().create();
JsonParser parser = new JsonParser();
JsonElement je = parser.parse(json.toString());
System.out.println(gson.toJson(je));

The output of the above code is:

{"root":{"value":"xpath('hello')"}}
{
  "root": {
    "value": "xpath(u0027hellou0027)"
  }
}

How could I fix the above?

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
444 views
Welcome To Ask or Share your Answers For Others

1 Answer

Use this code, to create Gson object:

Gson gs = new GsonBuilder()
    .setPrettyPrinting()
    .disableHtmlEscaping()
    .create();

The disableHtmlEscaping() method tells gson not to escape HTML characters such as <, >, &, =, and a single quote which caused you trouble: '.

Note, that this may cause trouble, if you render such unescaped JSON into a <script/> tag in HTML page without using additional <![CDATA[ ... ]]> tag.

You can see how it works, and what other chars are escaped, by looking into the code of JsonWriter class.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...