有没有办法在 javascript 中使用等同于 json.dumps 的东西
Is there a way to use something equivalent to json.dumps in javascript
我正在为我的 Django 模板提供一个对象列表。我有一个条件,我正在访问模板中的对象字段之一,它是一个包含 u'
个字符的 json 字段,例如 {u'option': False, u'name': u'test string'}
我们通常在 python 中使用 json.dumps 将其转换为 {"option": False, "name": "test string"}
,这是我想要的 json,因为我需要访问这样的我的 javascript.
中的字符串
在 javascript 中有没有简单的方法可以做到这一点?我想避免使用正则表达式去除 u' and '
并替换为 "
抱歉,如果这是非常基本的。不太了解javascript。
或者有没有办法从 python 以某种方式对我的对象字段 to_json 进行编码?
相当于 Python 在 JavaScript 中的 json.dumps()
是 JSON.stringify()
,如:
var jsonstr = JSON.stringify(someVariable);
有效 JSON 不包含像 u'something'
这样的结构,只包含 "something"
。如果你真的有这样的字符串,它很可能来自 Python 通过 repr()
或类似的。
如果您尝试将 Python 对象从它们各自的环境中转换为 JavaScript 对象,在 Python 中,您会将它们转换为 JSON 编码字符串使用 json.dumps()
,将字符串传输到 JavaScript 环境,然后使用 JSON.parse()
将它们转换回对象。
(请记住,JSON 不理解一些基本类型以外的任何内容,例如字符串、浮点数、布尔值、数组和 key:value 结构。例如,尝试传输 Python datetime
对象可能会得到字符串或集合 key:value 对而不是实际的 JavaScript Date
对象。)
不同之处在于 json.dumps
默认应用一些次要的 pretty-printing 但 JSON.stringify
不,您可以在下面看到相同的内容。
Python:
>>> import json
>>> json.dumps({"candidate" : 5, "data": 1})
'{"candidate": 5, "data": 1}'
Javacript:
> JSON.stringify({"candidate" : 5, "data": 1})
'{"candidate":5,"data":1}'
但是通过一些修改,我们可以拥有相同的 JSON 字符串,并且为了验证两者在格式上也是相同的 JSON 字符串,我们可以为两个 JSON 字符串生成散列并进行比较.有两种方法:-
- 修改
javascript JSON string
使其等同于 python JSON string
。
Python:
>>> import json,hashlib
>>> a = json.dumps({"candidate" : 5, "data": 1}, sort_keys=True)
>>> hashlib.md5(a.encode("utf-8")).hexdigest()
'12db79ee4a76db2f4fc48624140adc7e'
脚本:
> const Crypto = require("crypto-js")
undefined
> const a = JSON.stringify({"candidate" : 5, "data": 1}).replaceAll(":", ": ").replaceAll(",", ", ")
undefined
> Crypto.MD5(a).toString(Crypto.enc.Hex)
'12db79ee4a76db2f4fc48624140adc7e'
- 修改
python JSON string
使其等同于 javascript JSON string
。
Python:
>>> import json,hashlib
>>> a = json.dumps({"candidate" : 5, "data": 1}, separators=(',', ':'))
>>> hashlib.md5(a.encode("utf-8")).hexdigest()
'92e99f0a99ad2a3b5e02f717a2fb83c2'
脚本:
> const Crypto = require("crypto-js")
undefined
> const a = JSON.stringify({"candidate" : 5, "data": 1})
undefined
> Crypto.MD5(a).toString(Crypto.enc.Hex)
'92e99f0a99ad2a3b5e02f717a2fb83c2'
Note:- To run javascript code, crypto-js npm pkg should be installed as same location where you started the node shell.
我正在为我的 Django 模板提供一个对象列表。我有一个条件,我正在访问模板中的对象字段之一,它是一个包含 u'
个字符的 json 字段,例如 {u'option': False, u'name': u'test string'}
我们通常在 python 中使用 json.dumps 将其转换为 {"option": False, "name": "test string"}
,这是我想要的 json,因为我需要访问这样的我的 javascript.
在 javascript 中有没有简单的方法可以做到这一点?我想避免使用正则表达式去除 u' and '
并替换为 "
抱歉,如果这是非常基本的。不太了解javascript。
或者有没有办法从 python 以某种方式对我的对象字段 to_json 进行编码?
相当于 Python 在 JavaScript 中的 json.dumps()
是 JSON.stringify()
,如:
var jsonstr = JSON.stringify(someVariable);
有效 JSON 不包含像 u'something'
这样的结构,只包含 "something"
。如果你真的有这样的字符串,它很可能来自 Python 通过 repr()
或类似的。
如果您尝试将 Python 对象从它们各自的环境中转换为 JavaScript 对象,在 Python 中,您会将它们转换为 JSON 编码字符串使用 json.dumps()
,将字符串传输到 JavaScript 环境,然后使用 JSON.parse()
将它们转换回对象。
(请记住,JSON 不理解一些基本类型以外的任何内容,例如字符串、浮点数、布尔值、数组和 key:value 结构。例如,尝试传输 Python datetime
对象可能会得到字符串或集合 key:value 对而不是实际的 JavaScript Date
对象。)
不同之处在于 json.dumps
默认应用一些次要的 pretty-printing 但 JSON.stringify
不,您可以在下面看到相同的内容。
Python:
>>> import json
>>> json.dumps({"candidate" : 5, "data": 1})
'{"candidate": 5, "data": 1}'
Javacript:
> JSON.stringify({"candidate" : 5, "data": 1})
'{"candidate":5,"data":1}'
但是通过一些修改,我们可以拥有相同的 JSON 字符串,并且为了验证两者在格式上也是相同的 JSON 字符串,我们可以为两个 JSON 字符串生成散列并进行比较.有两种方法:-
- 修改
javascript JSON string
使其等同于python JSON string
。
Python:
脚本:>>> import json,hashlib >>> a = json.dumps({"candidate" : 5, "data": 1}, sort_keys=True) >>> hashlib.md5(a.encode("utf-8")).hexdigest() '12db79ee4a76db2f4fc48624140adc7e'
> const Crypto = require("crypto-js") undefined > const a = JSON.stringify({"candidate" : 5, "data": 1}).replaceAll(":", ": ").replaceAll(",", ", ") undefined > Crypto.MD5(a).toString(Crypto.enc.Hex) '12db79ee4a76db2f4fc48624140adc7e'
- 修改
python JSON string
使其等同于javascript JSON string
。
Python:
脚本:>>> import json,hashlib >>> a = json.dumps({"candidate" : 5, "data": 1}, separators=(',', ':')) >>> hashlib.md5(a.encode("utf-8")).hexdigest() '92e99f0a99ad2a3b5e02f717a2fb83c2'
> const Crypto = require("crypto-js") undefined > const a = JSON.stringify({"candidate" : 5, "data": 1}) undefined > Crypto.MD5(a).toString(Crypto.enc.Hex) '92e99f0a99ad2a3b5e02f717a2fb83c2'
Note:- To run javascript code, crypto-js npm pkg should be installed as same location where you started the node shell.