将具有特殊字符的 python 对象转换为 JSON 字符串对象
Turning python object with special character to JSON string object
我在堆栈溢出中查看了很多与此类问题相关的示例,但这些答案中的 none 对我的问题有效。我在一个变量中有一个字符串,其中包含转义单反斜杠字符“\”。我将该字符串变量连接到 JSON 字符串变量。然后在 json 字符串上执行 json.loads() 但我收到错误消息:
ValueError: Expecting , delimiter: line 1 column 41 (char 40)
这是我的代码:
import json
# The string of pass_string is taken from a rest/api/content of a website
pass_string = "I am an \"Engineer\""
data = '{"data": {"test": 1, "hello": "' + pass_string + ' in this lifetime."}, "id": 4}'
json_data = json.loads(data)
print(json_data)
由于 pass_string 是从网站的 request.get() 函数中获取的,因此无法将其转换为原始字符串然后输入到我们的数据中,例如:
pass_string = r"I am an \"Engineer\""
以上确实有效,但我的字符串在变量内部传递 pass_string 所以我必须以某种方式修改变量内部的内容。尝试了很多来自堆栈溢出的示例,但 none 似乎适用于我的情况。
停止尝试手动创建 JSON 字符串。那是你的根本问题。使用 python 数据结构 然后 使用 json
模块.[=19 将其序列化为末尾的字符串=]
所以从这样的事情开始:
>>> import json
>>> data = {"data": {"test": 1, "hello": " in this lifetime."}, "id": 4}
然后简单地:
>>> pass_string = "I am an \"Engineer\""
>>> data['data']['hello'] = pass_string + data['data']['hello']
>>> print(data)
{'data': {'test': 1, 'hello': 'I am an "Engineer" in this lifetime.'}, 'id': 4}
>>> print(json.dumps(data))
{"data": {"test": 1, "hello": "I am an \"Engineer\" in this lifetime."}, "id": 4}
尽管如此,由于您将其作为 data
参数传递给 requests.put
,因此您根本不必使用 json.dumps
...清楚,我 认为 你实际上是从 JSON 字符串开始的,
data = '{"data": {"test": 1, "hello": " in this lifetime."}, "id": 4}'
所以你应该做的只是:
data = json.loads(data)
data['data']['hello'] = pass_string + data['data']['hello']
瞧瞧。你现在可以做 requests.put(url,data=data)
json.loads
需要转义的字符串表示,所以需要转义转义:
import json
pass_string = "I am an \"Engineer\"".replace('\"', '\"')
data = '{"data": {"test": 1, "hello": "' + pass_string + ' in this lifetime."}, "id": 4}'
json_data = json.loads(data)
print(json_data)
输出:
{'data': {'test': 1, 'hello': 'I am an "Engineer" in this lifetime.'}, 'id': 4}
我在堆栈溢出中查看了很多与此类问题相关的示例,但这些答案中的 none 对我的问题有效。我在一个变量中有一个字符串,其中包含转义单反斜杠字符“\”。我将该字符串变量连接到 JSON 字符串变量。然后在 json 字符串上执行 json.loads() 但我收到错误消息:
ValueError: Expecting , delimiter: line 1 column 41 (char 40)
这是我的代码:
import json
# The string of pass_string is taken from a rest/api/content of a website
pass_string = "I am an \"Engineer\""
data = '{"data": {"test": 1, "hello": "' + pass_string + ' in this lifetime."}, "id": 4}'
json_data = json.loads(data)
print(json_data)
由于 pass_string 是从网站的 request.get() 函数中获取的,因此无法将其转换为原始字符串然后输入到我们的数据中,例如:
pass_string = r"I am an \"Engineer\""
以上确实有效,但我的字符串在变量内部传递 pass_string 所以我必须以某种方式修改变量内部的内容。尝试了很多来自堆栈溢出的示例,但 none 似乎适用于我的情况。
停止尝试手动创建 JSON 字符串。那是你的根本问题。使用 python 数据结构 然后 使用 json
模块.[=19 将其序列化为末尾的字符串=]
所以从这样的事情开始:
>>> import json
>>> data = {"data": {"test": 1, "hello": " in this lifetime."}, "id": 4}
然后简单地:
>>> pass_string = "I am an \"Engineer\""
>>> data['data']['hello'] = pass_string + data['data']['hello']
>>> print(data)
{'data': {'test': 1, 'hello': 'I am an "Engineer" in this lifetime.'}, 'id': 4}
>>> print(json.dumps(data))
{"data": {"test": 1, "hello": "I am an \"Engineer\" in this lifetime."}, "id": 4}
尽管如此,由于您将其作为 data
参数传递给 requests.put
,因此您根本不必使用 json.dumps
...清楚,我 认为 你实际上是从 JSON 字符串开始的,
data = '{"data": {"test": 1, "hello": " in this lifetime."}, "id": 4}'
所以你应该做的只是:
data = json.loads(data)
data['data']['hello'] = pass_string + data['data']['hello']
瞧瞧。你现在可以做 requests.put(url,data=data)
json.loads
需要转义的字符串表示,所以需要转义转义:
import json
pass_string = "I am an \"Engineer\"".replace('\"', '\"')
data = '{"data": {"test": 1, "hello": "' + pass_string + ' in this lifetime."}, "id": 4}'
json_data = json.loads(data)
print(json_data)
输出:
{'data': {'test': 1, 'hello': 'I am an "Engineer" in this lifetime.'}, 'id': 4}