title: Gson FieldNamingStrategy with multiple policies
body: <p>I want to map underscored field(such as <code>this_field_to_mapped</code>) to camelcase(<code>thisFieldToMapped</code>).</p>
  
  <p>So I created <code>Gson</code> object with <code>GsonBuilder</code> and coded a new class implemented <code>FieldNamingStrategy</code> and <code>SomeClass</code>.</p>
  
  <p>And I'd run <code>Gson.fromJson</code> from <code>{"thisItem" : "hello", "this_field_to_mapped":1}</code>, but console log had printed out like this.</p>
  
  <blockquote>
    <p>replaced : thisItem<br/>
    replaced : thisFieldToMapped<br/>
    hello<br/>
    0</p>
  </blockquote>
  
  <p><code>thisItem</code> was mapped well, however <code>thisFieldToMapped</code> had printed 0.</p>
  
  <p>How can I map underscored field to camelcase ? </p>
  
  <p>here's my code. </p>
  
  <blockquote>
    <p>SomeClass</p>
  </blockquote>
  
  <pre><code>public static class SomeClass {
      public String thisItem;
      public int thisFieldToMapped;
  }
  </code></pre>
  
  <blockquote>
    <p>UnderScoreToUpper</p>
  </blockquote>
  
  <pre><code>public static class UnderScoreToUpper implements FieldNamingStrategy {
  
      public String translateName(Field f) {
          String name = f.getName();
  
          Pattern p = Pattern.compile("[_][a-z]{1}");
  
          Matcher m = p.matcher(name);
  
          while (m.find()) {
              System.out.println("matched : " + m.group(0));
              String c = m.group(0).replace("_", "").toUpperCase();
              name = name.replace(m.group(0), c);
          }
  
          System.out.println("replaced : " + name);
  
          return name;
      }
  
  }
  </code></pre>
  
  <p>And this is main method </p>
  
  <pre><code>public static void main(String[] args) {
  
      String gsonString = "{\"thisItem\" : \"hello\", \"this_field_to_mapped\":1}";
  
      Gson g = new GsonBuilder()
              .setDateFormat("yyyy-MM-dd HH:mm:ss")
              .setFieldNamingStrategy(new UnderScoreToUpper())
              .serializeSpecialFloatingPointValues().setPrettyPrinting()
              .serializeNulls().create();
  
      SomeClass c = g.fromJson(gsonString, SomeClass.class);
  
      if (c != null) {
          System.out.println(c.thisItem);
          System.out.println(c.thisFieldToMapped);
      }
  }
  </code></pre>