JSON 对象 or JSON 字符串

2018-12-04 09:01:09 +08:00
 secsilm

前端向后端( flask )发送 AJAX POST 请求的时候,你们一般是发 JSON 对象还是 JSON 字符串呢?

同样,后端返回数据的时候是发 JSON 对象还是 JSON 字符串呢?

如果用字符串,是基于什么考虑呢?谢谢

我自己偏向于对象,双方都方便。但是同事之间讨论的时候做 Java 的坚持字符串,不知道因为啥,特来求教

3003 次点击
所在节点    Python
23 条回复
isCyan
2018-12-04 09:03:50 +08:00
json 对象?难道不会被转成 x-www-form ?
python 支持 json 对象?不是要 decode json 字符串吗
geying
2018-12-04 09:06:43 +08:00
因为数据传的时候都是字符串吧
qiayue
2018-12-04 09:07:02 +08:00
后端只能返回字符串形式吧?
{"name":"V2EX"}
比如上面这个是 api 返回的,你觉得是字符串还是对象?
keepeye
2018-12-04 09:13:15 +08:00
你不妨抓个包看看....
tao1991123
2018-12-04 09:14:22 +08:00
这是对 HTTP 协议有多不了解才会问出这种问题
nekoneko
2018-12-04 09:17:02 +08:00
只会是字符串
misaka19000
2018-12-04 09:17:42 +08:00
这是来黑 python 的
f2ck
2018-12-04 09:21:30 +08:00
在 request 的时候:
我在想 json 字符串和 json 对象,到最终不还是要转化成 jsondata 放在 httpbody 里面么?
就此字符串和对象没区别。

在 response 的时候:
请求的结果是二进制吧,转化成字符串还是对象,是前端解析的事情。
secsilm
2018-12-04 09:27:01 +08:00
我不是做后端的,只是工作中涉及一点,请大家轻喷,就当给大家看个笑话,别人身攻击就行了
secsilm
2018-12-04 09:28:46 +08:00
@qiayue
@f2ck
我之所以说后端返回 json 对象(暂且这么说吧。。),是因为前端接收到我的返回后,直接可以用 a.b 的方式使用,不用任何转换,这是不是就是说返回的是 json 对象?
kimown
2018-12-04 09:31:31 +08:00
你知道 fetch 里面为什么有 tojson totext tobuffer 吗
jackchao7432
2018-12-04 09:36:19 +08:00
不是做后端的,起码也要理解什么叫对象....
vjnjc
2018-12-04 09:38:08 +08:00
你要是说的是对象和字符串都是 JSON 范畴的话,应该发对象{},而不是字符串“”
Chingim
2018-12-04 09:38:32 +08:00
对于 json 文本,后端应该把 http 头 content-type 设置为 application/json ,一些语言或者框架看到这个头部字段,会帮你转成 json 对象
secsilm
2018-12-04 09:39:43 +08:00
谢谢各位大佬,经过提醒然后我自己查了查,发现自己接收和返回的一直是字符串,这问题简直了。。。帖子下沉。
xiao17174
2018-12-04 10:54:06 +08:00
我倒觉得还是有讨论价值的.
如果当成 json 对象,那么报文如下:
HTTP head
{"dds":2}
如果当成字符串,那么报文如下:
HTTP head
"{\"dds\":2}"
如果通信是使用成熟的框架肯定是第一种直接,Body 即 json.
但是如果考虑到通用性,其实第二种也有存在的价值.原因在于它被首先认为是一个字符串,这样即使在不支持 json 解析的系统中也被看成是一个整体.
sunnyadamm
2018-12-04 11:23:56 +08:00
当然字符串啊。哈哈哈哈
Shynoob
2018-12-04 11:47:53 +08:00
JSON 格式的字符串
reus
2018-12-04 11:51:58 +08:00
json 就是用字符串表示 js 对象,你概念混乱。
Chingim
2018-12-04 12:16:23 +08:00
@xiao17174 http 报文主体的内容是字节,没什么对象 /文本 /图像的概念。至于这些字节什么含义怎么解析,通过报文头部字段告诉另一端就好了。你举的这个例子,不管 content-type 是 application/json 还是 plain/text,报文主体的内容是一样的字节

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/514058

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX