Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将示例Python to-do list重构为web服务,TypeError: JSON对象必须是字符串,而不是'bytes‘

将示例Python to-do list重构为web服务,TypeError: JSON对象必须是字符串,而不是'bytes‘
EN

Stack Overflow用户
提问于 2018-04-24 14:37:03
回答 1查看 80关注 0票数 0

下面是sample.py:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from flask import Flask, render_template, jsonify
import urllib.request
import sqlite3
import json

app = Flask(__name__)
app.config.from_object(__name__)

@app.route("/")
def show_list():
    with urllib.request.urlopen('http://localhost:6000/api/items') as response:
        resp = response.read()
    resp = json.loads(resp)
    return render_template('index.html', todolist=resp)


if __name__ == "__main__":
    app.debug = True
    app.run(port=5000)

这是sampleapi.py

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from flask import Flask, render_template, redirect, g, request, url_for, jsonify
import sqlite3
import urllib.request

DATABASE = 'todolist.db'

app = Flask(__name__)
app.config.from_object(__name__)

@app.route("/api/items")
def get_items():
    db = get_db()
    cur = db.execute('SELECT what_to_do, due_date, status FROM entries')
    entries = cur.fetchall()
    tdlist = [dict(what_to_do=row[0], due_date=row[1], status=row[2])
              for row in entries]
    return jsonify(tdlist)

def get_db():
    """open new db connection.
    """
    if not hasattr(g, 'sqlite_db'):
        g.sqlite_db = sqlite3.connect(app.config['DATABASE'])
    return g.sqlite_db

@app.teardown_appcontext
def close_db(error):
    """Close db at the end of the request."""
    if hasattr(g, 'sqlite_db'):
        g.sqlite_db.close()

if __name__ == "__main__":
    app.run("0.0.0.0", port=6000)

这是我得到的错误:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
File "sample.py", line 14, in show_list
TypeError: the JSON object must be str, not 'bytes'

所以我认为我必须改变urllib.request.urlopen('http://localhost:6000/api/items') as response:

因为我们不能使用urllib库来发送POST请求,因为它以字节而不是JSON的形式发送数据。那么,如何使用请求库,它可以作为json通过http协议发送数据呢?

EN

回答 1

Stack Overflow用户

发布于 2018-04-24 14:43:39

你的问题肯定可以在没有requests的情况下解决,但无论如何它比urllib更容易使用,所以我推荐它。下面是你要做的事情:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import requests

resp = requests.get('http://localhost:6000/api/items').json()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50004382

复制
相关文章
Python报错:TypeError: the JSON object must be str, bytes or bytearray, not ‘dict‘
当我尝试运行以下代码,来练习使用json.loads()和json.dumps()函数时,系统给我报出了这个错误。
JavaEdge
2021/02/23
3.1K0
前端json字符串转json对象_list对象转json
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/10
4.1K0
json字符串转成list集合_将json字符串转换成对象
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/08
1.7K0
springcloud 返回的数据为XML 而不是JSON
本人的原因是因为引入了jackson-dataformat-xml依赖导致的,下面查看自己项目是否包含此依赖,如果包含的话,可以去掉。 有的人添加了下面注解后可以解决,不过我这里没有解决。还是依靠上图
qubianzhong
2019/04/01
2.3K0
springcloud 返回的数据为XML 而不是JSON
java list 转json 字符串_fastjson将java list转为json字符串
1.直接用fastjson的静态方法string JSON.toJSONString(list)方法就行,JSON.toJSONString(list)将java list转为json字符串。
全栈程序员站长
2022/11/02
11.6K0
将单体应用重构为微服务
微服务重构概述 将单体应用程序转换为微服务的过程是应用程序现代化的一种形式。这是几十年来开发人员一直在做的事情。因此,在将应用程序重构为微服务时,有一些方法可以重用。 一个策略是不推荐“大面积”重写。那就是当您将所有的开发工作集中在从头开始构建新的基于微服务器的应用程序时。虽然听起来很吸引人,但它是非常危险的,可能会以失败告终。 您应该逐步重构单体应用程序,而不是大面积重写。您应该逐渐构建一个由微服务组成的新应用程序,并与您的单体应用程序一起运行。随着时间的推移,单体应用程序实现的功能量会缩小,直到它完全消
用户1263954
2018/01/30
1K0
将单体应用重构为微服务
js将json字符串转换成json对象_json对象转字符串
对象结构以”{”大括号开始,以”}”大括号结束。中间部分由0或多个以”,”分隔的”key(关键字)/value(值)”对构成,关键字和值之间以”:”分隔,语法结构如代码
全栈程序员站长
2022/11/08
8.2K0
js如何将json字符串转成json对象_前端json字符串转json对象
JSON字符串: var str1 = ‘{ “name”: “cxh”, “sex”: “man” }’; JSON对象: var str2 = { “name”: “cxh”, “sex”: “man” };
全栈程序员站长
2022/11/08
9.4K0
java list对象转json_json转list对象集合
2.使用JSONArray json=JSONArray.fromobject(list);在调用json.toString()方法转换成字符串
全栈程序员站长
2022/11/07
3.1K0
Jackson将json字符串转换成List<JavaBean>
public final ObjectMapper mapper = new ObjectMapper(); public static void main(String[] args) throws Exception{ String jsonString = getJsonString(); //getConfig省略 //List<Config> configList = (List<Config>)jsonString //上面这样转换是错的,但是编
ydymz
2018/09/10
2.4K0
java中list对象和json字符串互转
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
全栈程序员站长
2022/11/02
8860
Python中list转成Json字符串
{ “0”: “123”, “2”: “34”, “3”: “456”, “1”: “345” }
全栈程序员站长
2022/11/02
1.9K0
Python3将API返回的bytes解码为str
如果将这种类型的字串直接存入到数据库的话,从数据库中读取出的字串进行操作会出现问题,比如上面的字串直接进行解析的话会直接报错,原因是str存着的实际上是一串没有解码的bytes。所以存入数据库时,要对bytes进行解码的操作。各位看官,详细操作请往下看。
十里桃花舞丶
2019/02/20
8420
java json对象和json字符串互转的方法_将json字符串转换成对象
这个json字符串中包含的数据可以转化为一个List<People>集合,代码如下:
全栈程序员站长
2022/11/09
1.9K0
python模块list 转json字符串_python 列表 字典转json[通俗易懂]
bJson = json.dumps(bItem, ensure_ascii=False)
全栈程序员站长
2022/11/02
4.6K0
Python3中文字符编码问题
最近在尝试 Python Web方面的开发尝试,框架使用的是Django,但是在读取数据库并页面展示的时候,出现了中文编码的问题。
小柒2012
2018/12/14
5.4K0
jackson简单使用,对象转json,json转对象,json转list
添加jackson依赖: // https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core compile group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.8.2' // https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind
Ryan-Miao
2018/03/13
7.8K0
Python3.7中文字符编码问题
最近在尝试 Python Web方面的开发尝试,框架使用的是Django,但是在读取数据库并页面展示的时候,出现了中文编码的问题。
小柒2012
2019/12/05
1.7K0
js 将json字符串转换为json对象的方法解析
将json字符串转换为json对象的方法。在数据传输过程中,json是以文本,即字符串的形式传递的,而JS操作的是JSON对象,所以,JSON对象和JSON字符串之间的相互转换是关键 例如: JSON字符串: var str1 = '{ "name": "cxh", "sex": "man" }'; JSON对象: var str2 = { "name": "cxh", "sex": "man" }; 一、JSON字符串转换为JSON对象 要使用上面的str1,必须使用下面的方法先转化为JSON对象:
小柒2012
2018/04/13
9.4K0
点击加载更多

相似问题

TypeError: JSON对象必须是字符串,而不是'bytes‘

30

TypeError: JSON对象必须是字符串,而不是“list”

10

JSON对象必须是str,而不是'list‘- TypeError

20

我为VM,TypeError收集铬: JSON对象必须是字符串,而不是'bytes‘

152

JSON对象必须是字符串,而不是'bytes‘

31
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文