title: JestResult.getSourceAsObjectList - for "@timestamp" or seemingly any field starting with "@"
body: <p>How would JestResult.getSourceAsObjectList be used to map the field "@timestamp"?  Actually, I cannot figure out how to map any field with a name starting with "@".  It keeps getting set to "null". </p>
  
  <p>For example if the Elasticsearch query returns</p>
  
  <pre><code>{
      "_id": "Vhv2OE1SNSeSg285UYQRQ",
      "@version": "1",
      "@timestamp": "2014-12-19T01:18:06.454Z"
      "type": "hdfs"
  }
  </code></pre>
  
  <p>and there is a matching POJO Java class</p>
  
  <pre><code>import io.searchbox.annotations.JestId;
  
  public class ElasticsearchLog {
  
      @JestId
      private String _id;
      private String version;
      private String timestamp;
      private String type;
  
      @Override
      public String toString() {
          return "ElasticsearchLog{" +
                  "_id='" + _id + '\'' +
                  ", version='" + version + '\'' +
                  ", timestamp='" + timestamp + '\'' +
                 ", type='" + type + '\''
              '    }';
  
  }
  </code></pre>
  
  <p>Then doing</p>
  
  <pre><code>import io.searchbox.client.JestClient;
  import io.searchbox.client.JestClientFactory;
  import io.searchbox.client.JestResult;
  import io.searchbox.client.config.HttpClientConfig;
  import io.searchbox.core.Search;
  import java.util.List;
  
  public class JESTClient {
      public static void main(String[] args) throws Exception {
          String clusterIP = "localhost";
          String port = "9200";
  
          //setup client
          JestClientFactory factory = new JestClientFactory();
          factory.setHttpClientConfig(new HttpClientConfig
                  .Builder("http://" + clusterIP + ":" + port)
                  .multiThreaded(true)
                  .build());
          JestClient client = factory.getObject();
  
          Search search = new Search.Builder("{  \"query\": { \"match_all\": {} } }")
                  .addIndex("_all")
                  .build();
          JestResult result = client.execute(search);
          List&lt;ElasticsearchLog&gt; resultLogs = result.getSourceAsObjectList(ElasticsearchLog.class);
          for(ElasticsearchLog log: resultLogs){
              System.out.println(log);
          }
  </code></pre>
  
  <p>Prints out</p>
  
  <pre><code>ElasticsearchLog{_id='Vhv2OE1SNSeSg285UYQRQ', version='null', timestamp='null', type='hdfs'}
  </code></pre>
  
  <p>So the "@version" and "@timestamp" are not getting mapped properly.</p>
  
  <p>JsonObject itself seems to be just fine with "@" symbols:</p>
  
  <pre><code>import com.google.gson.JsonObject;
  
  public static void main(String[] args){
          JsonObject testy = new JsonObject();
          testy.addProperty("@timestamp", "zzz");
          System.out.println(testy.get("@timestamp"));
  }
  </code></pre>
  
  <p>Outputs: "zzz"</p>
  
  <p>What is the proper usage of JestResult.
  getSourceAsObjectList to map a json field with a name starting with "@"?</p>
  
  <p>Note: This is for</p>
  
  <pre><code>&lt;dependency&gt;
      &lt;groupId&gt;io.searchbox&lt;/groupId&gt;
      &lt;artifactId&gt;jest&lt;/artifactId&gt;
      &lt;version&gt;0.1.4&lt;/version&gt;
  &lt;/dependency&gt;
  </code></pre>