title: Prevent GSON from serializing JSON string
body: <p>I'm new to gson, and have newby question which I have not found an answer to, so please bear with me. StackOverflow and google were not my friend :(</p>
  
  <p>I have a java class "User", and one of its properties, "externalProfile" is a Java String containing already serialized JSON. When gson serializes the User object, it will treat externalProfile as primitive and thus escaping the JSON adding extra slashes etc.
  I want gson to leave the string alone, just using it "as is", because it is already valid and usable JSON.</p>
  
  <p>To distinguish the JSON string, I created a simple class called JSONString, and I've tried using reader/writers, registerTypeAdapter, but nothing works.
  Can you help me out?</p>
  
  <pre><code>public class User {
      private JSONString externalProfile;
      public void setExternalProfile(JSONString externalProfile) { this.externalProfile = externalProfile; }
  
  }
  
  public final class JSONString {
      private String simpleString;
      public JSONString(String simpleString) { this.simpleString = simpleString; }
  }
  
  public customJsonBuilder(Object object) {
      GsonBuilder builder = new GsonBuilder();
          builder.registerTypeAdapter(GregorianCalendar.class, new JsonSerializer&lt;GregorianCalendar&gt;() {
              public JsonElement serialize(GregorianCalendar src, Type type, JsonSerializationContext context) {
                  if (src == null) {
                      return null;
                  }
                  return new JsonPrimitive(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(src.getTime()));
              }
          });
          Gson gson = builder.create();
          return gson.toJson(object);
  }
  </code></pre>
  
  <p>As en example, the externalProfile will hold (as String value): </p>
  
  <pre><code>{"profile":{"registrationNumber": 11111}}
  </code></pre>
  
  <p>After I store it as JSONString in the User object, and we convert the user object to JSON:</p>
  
  <pre><code>User user = new User();
  user.setExternalProfile(new JSONString(externalProfile)),  
  String json = customJsonBuilder(user);
  </code></pre>
  
  <p>json will hold something like: </p>
  
  <pre><code>{\"profile\":{\"registrationNumber\": 11111}}
  </code></pre>
  
  <p>So, the externalProfile JSONString is serialized by gson as String primitive, adding the extra slashes in front of the doublequotes.
  I want gson to leave this JSONString as is, because it already is usable JSON.
  I'm looking for a type adapter / reader-writer to do this, but I can't get it to work.</p>