 <p>Replace</p> <pre><code>private ArrayList&lt;Player&gt; playerSummaries = new ArrayList&lt;Player&gt;(); </code></pre> <p>with</p> <pre><code>private ArrayList&lt;Player&gt; players = new ArrayList&lt;Player&gt;(); </code></pre> <p>GSON uses reflection to look up which field it should populate. In your case it is looking up whether you have a field named <code>players</code> which you do not. </p> <p>You also do not need to instantiate the field, GSON will do that for you.</p> <p><strong>EDIT:</strong></p> <p>You also need a wrapper class around your top-level object. So</p> <pre><code>class MyObject { public Response response; } MyObject myObject = gson.fromJson(jsonData, MyObject.class); </code></pre>