title: Why json.loads is returning a unicode object instead of string
body: <p>I cannot understand why the following type changes to unicode from str.</p>
  
  <p>CASE1</p>
  
  <pre><code>Python 2.7 (r27:82500, Nov 19 2014, 18:07:42)
  [GCC 4.5.1 20100924 (Red Hat 4.5.1-4)] on linux2
  Type "help", "copyright", "credits" or "license" for more information.
  &gt;&gt;&gt; import json
  &gt;&gt;&gt; x = {'resources': {}, 'tags': ['a', 'b']}  
  &gt;&gt;&gt; ret = json.dumps( x )
  &gt;&gt;&gt; ret
  '{"resources": {}, "tags": ["a", "b"]}'
  &gt;&gt;&gt;
  &gt;&gt;&gt; type( ret )
  &lt;type 'str'&gt;
  &gt;&gt;&gt; ret2 = json.loads( ret )
  &gt;&gt;&gt; ret2
  {'resources': {}, 'tags': ['a', 'b']}
  </code></pre>
  
  <p>CASE2</p>
  
  <pre><code>Python 2.7.5 (default, Apr 22 2015, 21:27:15) 
  [GCC 4.9.2 20141101 (Red Hat 4.9.2-1)] on linux2
  Type "help", "copyright", "credits" or "license" for more information.
  &gt;&gt;&gt; import json
  &gt;&gt;&gt; x = {'resources': {}, 'tags': ['a', 'b']}  
  &gt;&gt;&gt; ret = json.dumps( x )
  &gt;&gt;&gt; ret
  '{"resources": {}, "tags": ["a", "b"]}'
  &gt;&gt;&gt; type( x )
  &lt;type 'dict'&gt;
  &gt;&gt;&gt; type( ret )
  &lt;type 'str'&gt;
  &gt;&gt;&gt; ret2 = json.loads( ret )
  &gt;&gt;&gt; ret2
  {u'resources': {}, u'tags': [u'a', u'b']}
  &gt;&gt;&gt; 
  </code></pre>
  
  <p>So, in the case 2 we see unicode objects where as in case 1, we see string instead.
  I don't see any code change has happened in the two version of python that can lead to this. May be I missed something.
  Any leads would be appreciated.
  Thanks</p>