title: ValueError: No JSON object could be decoded error with valid json
body: <p>I got this error even the json code is correct (I tested it with <a href="http://jsonlint.com/" rel="nofollow">JSON Validator</a>). Here's my code :</p>
  
  <pre><code>import urllib.request, urllib.parse
  import json
  
  num_queries = 50*4 
  query = urllib.parse.urlencode({'q' : 'example'})
  url = 'http://ajax.googleapis.com/ajax/services/search/web?v=1.0&amp;%s' % query
  
  for start in range(0, num_queries, 4):
      request_url = '{0}&amp;start={1}'.format(url, start)
      print(request_url)
      request = urllib.request.Request(request_url)
      request.add_header('User-Agent','Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)')
      search_results = urllib.request.urlopen(request)
      encoding = search_results.headers.get_content_charset()
      print(search_results.read().decode(encoding))
      json = json.loads(search_results.read().decode(encoding))
      results = json['responseData']['results']
      for i in results:
          print (i['url'])
  </code></pre>
  
  <p>Here's the responses I get :</p>
  
  <pre><code>{
  "responseData": {
      "results": [
          {
              "GsearchResultClass": "GwebSearch",
              "unescapedUrl": "http://example.com/",
              "url": "http://example.com/",
              "visibleUrl": "example.com",
              "cacheUrl": "http://www.google.com/search?q=cache:OEM9MzUDrRQJ:example.com",
              "title": "&lt;b&gt;Example&lt;/b&gt; Domain",
              "titleNoFormatting": "Example Domain",
              "content": "&lt;b&gt;Example&lt;/b&gt; Domain. This domain is established to be used for illustrative &lt;b&gt;examples&lt;/b&gt; \nin documents. You may use this domain in &lt;b&gt;examples&lt;/b&gt; without prior coordination ..."
          },
          {
              "GsearchResultClass": "GwebSearch",
              "unescapedUrl": "http://fr.wikipedia.org/wiki/Example_(chanteur)",
              "url": "http://fr.wikipedia.org/wiki/Example_(chanteur)",
              "visibleUrl": "fr.wikipedia.org",
              "cacheUrl": "http://www.google.com/search?q=cache:KQgswW_0sBoJ:fr.wikipedia.org",
              "title": "&lt;b&gt;Example&lt;/b&gt; (chanteur) — Wikipédia",
              "titleNoFormatting": "Example (chanteur) — Wikipédia",
              "content": "Elliot John Gleave plus connu sous le pseudonyme &lt;b&gt;Example&lt;/b&gt; (né le 20 juin 1982) \nest un chanteur et rappeur britannique. Son nom de scène vient de ses ..."
          },
          {
              "GsearchResultClass": "GwebSearch",
              "unescapedUrl": "http://www.trythisforexample.com/",
              "url": "http://www.trythisforexample.com/",
              "visibleUrl": "www.trythisforexample.com",
              "cacheUrl": "http://www.google.com/search?q=cache:VErXNqtEJDsJ:www.trythisforexample.com",
              "title": "&lt;b&gt;Example&lt;/b&gt;",
              "titleNoFormatting": "Example",
              "content": "Official site for &lt;b&gt;Example&lt;/b&gt;. ... Pre-order New Album · Tour Dates · Merch · Twitter · \nInstagram · Facebook · Youtube &lt;b&gt;Example&lt;/b&gt; © 2013 Epic Records Privacy Policy."
          },
          {
              "GsearchResultClass": "GwebSearch",
              "unescapedUrl": "http://www.youtube.com/watch?v=CLXt3yh2g0s",
              "url": "http://www.youtube.com/watch%3Fv%3DCLXt3yh2g0s",
              "visibleUrl": "www.youtube.com",
              "cacheUrl": "http://www.google.com/search?q=cache:9CKsisLTCjgJ:www.youtube.com",
              "title": "&lt;b&gt;Example&lt;/b&gt; - &amp;#39;Changed The Way You Kiss Me&amp;#39; (Official Video) - YouTube",
              "titleNoFormatting": "Example - &amp;#39;Changed The Way You Kiss Me&amp;#39; (Official Video) - YouTube",
              "content": "Apr 21, 2011 &lt;b&gt;...&lt;/b&gt; Download &lt;b&gt;Example&amp;#39;s&lt;/b&gt; new single &amp;#39;Perfect Replacement&amp;#39; on iTunes (Out Now): http\n://www.smarturl.it/PERFECTREPLACEMENT For more Click ..."
          }
      ],
      "cursor": {
          "resultCount": "157 000 000",
          "pages": [
              {
                  "start": "0",
                  "label": 1
              },
              {
                  "start": "4",
                  "label": 2
              },
              {
                  "start": "8",
                  "label": 3
              },
              {
                  "start": "12",
                  "label": 4
              },
              {
                  "start": "16",
                  "label": 5
              },
              {
                  "start": "20",
                  "label": 6
              },
              {
                  "start": "24",
                  "label": 7
              },
              {
                  "start": "28",
                  "label": 8
              }
          ],
          "estimatedResultCount": "157000000",
          "currentPageIndex": 0,
          "moreResultsUrl": "http://www.google.com/search?oe=utf8&amp;ie=utf8&amp;source=uds&amp;start=0&amp;hl=fr&amp;q=example",
          "searchResultTime": "0,22"
      }
  },
  "responseDetails": null,
  "responseStatus": 200
  }
  </code></pre>
  
  <p>The error :</p>
  
  <pre><code>Traceback (most recent call last):
    File "test.py", line 16, in &lt;module&gt;
      text = json.loads(search_results.read().decode(encoding))
    File "/usr/lib/python3.3/json/__init__.py", line 319, in loads
      return _default_decoder.decode(s)
    File "/usr/lib/python3.3/json/decoder.py", line 352, in decode
      obj, end = self.raw_decode(s, idx=_w(s, 0).end())
    File "/usr/lib/python3.3/json/decoder.py", line 370, in raw_decode
      raise ValueError("No JSON object could be decoded")
  ValueError: No JSON object could be decoded
  </code></pre>