当前位置: 首页 > 面试题库 >

JSONDecodeError:预期值:第1行第1列(字符0)

步骏
2023-03-14
问题内容

Expecting value: line 1 column 1 (char 0)尝试解码JSON 时出现错误。

我用于API调用的URL在浏览器中可以正常工作,但是通过curl请求完成时会出现此错误。以下是我用于curl请求的代码。

错误发生在 return simplejson.loads(response_json)

    response_json = self.web_fetch(url)
    response_json = response_json.decode('utf-8')
    return json.loads(response_json)


def web_fetch(self, url):
        buffer = StringIO()
        curl = pycurl.Curl()
        curl.setopt(curl.URL, url)
        curl.setopt(curl.TIMEOUT, self.timeout)
        curl.setopt(curl.WRITEFUNCTION, buffer.write)
        curl.perform()
        curl.close()
        response = buffer.getvalue().strip()
        return response

完整回溯:

追溯:

File "/Users/nab/Desktop/myenv2/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
  111.                         response = callback(request, *callback_args, **callback_kwargs)
File "/Users/nab/Desktop/pricestore/pricemodels/views.py" in view_category
  620.     apicall=api.API().search_parts(category_id= str(categoryofpart.api_id), manufacturer = manufacturer, filter = filters, start=(catpage-1)*20, limit=20, sort_by='[["mpn","asc"]]')
File "/Users/nab/Desktop/pricestore/pricemodels/api.py" in search_parts
  176.         return simplejson.loads(response_json)
File "/Users/nab/Desktop/myenv2/lib/python2.7/site-packages/simplejson/__init__.py" in loads
  455.         return _default_decoder.decode(s)
File "/Users/nab/Desktop/myenv2/lib/python2.7/site-packages/simplejson/decoder.py" in decode
  374.         obj, end = self.raw_decode(s)
File "/Users/nab/Desktop/myenv2/lib/python2.7/site-packages/simplejson/decoder.py" in raw_decode
  393.         return self.scan_once(s, idx=_w(s, idx).end())

Exception Type: JSONDecodeError at /pricemodels/2/dir/
Exception Value: Expecting value: line 1 column 1 (char 0)

问题答案:

总结评论中的对话:

  • 不需要使用simplejson库,Python作为json模块包含了相同的库。

  • 无需解码从UTF8到unicode的响应,simplejson/ json .loads()方法可以本地处理UTF8编码的数据。

  • pycurl有一个非常古老的API。除非您有特定的使用要求,否则会有更好的选择。

requests提供最友好的API,包括JSON支持。如果可以,将您的通话替换为:

import requests

return requests.get(url).json()


 类似资料:
  • 我使用请求来获取和解析使用Scrapy with Scrapyrt(实时刮取)刮取的一些数据。 我是这样做的: 根据Scrapy文档,当参数设置为时,爬行器会自动请求URL并将响应传递给解析方法,解析方法是解析请求时使用的默认方法。 start_requests 类型:布尔型 可选的 spider是否应执行Scrapy.spider.start\u请求方法。在没有ScrapyRT的情况下正常运行S

  • 问题内容: 我在使用json.loads转换为dict对象时遇到麻烦,我无法弄清楚我在做什么错。我得到的确切错误是 这是我的代码: 我很确定错误发生在第二行到最后一行 但我不知道该如何解决。任何意见,将不胜感激。 问题答案: 将json字符串加载到python中,将python转储到json字符串中,例如: 所以那行是不正确的,因为您正在尝试使用python ,并期望应该有一个有效的。 因此,如果

  • 问题内容: 我有这种方法: 我想解析一个JSON: 但是我收到一条错误消息: com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:预期为BEGIN_OBJECT,但位于第1行第1列 问题答案: 即使没有看到您的JSON字符串,您也可以从错误消息中得知,它不是要解析为类实例的正确结构。 Gson希望您的JSON字符串

  • 问题内容: 我想解析一个JSON: 但是我收到一条错误消息: ,但位于第1行第1列 问题答案: 即使没有看到你的JSON字符串,你也可以从错误消息中得知,它不是要解析为类实例的正确结构。 Gson希望你的JSON字符串以对象打开括号开头。例如 但是你传递给它的字符串以开引号开头

  • 我正在尝试运行此应用程序,但当我尝试登录时,我在“logcat”中看到此错误。消息“Success Login”表示它已被记录,并且有到数据库的连接,但我不知道在哪里等待对象,在哪里接收字符串。 10-11 14:54:10.481 2532-7430/com.alvardev.demos.limaculturalD/com.alvardev.demos.limacultural.http.Res

  • 问题内容: 我刚从gson开始,我想解析一个以对象开头的JSON字符串,并且总是得到相同的错误JSON。 我一直遇到错误: 我的日志中的错误指向这一行: 这是我的pojo 问题答案: 您的主类将数据作为列表。您的JSON将其作为对象。类型需要匹配。如果您希望main中只有1个数据,请不要使用列表。如果期望1个或多个数据,则使生成数据的代码向下发送一个数组(即使该数组中只有1个对象)。