我正在开发一个将字典作为字符串获取的函数,我需要追加到另一个作为字典的函数。之后,我需要像JSON一样解析它以进行发布请求。我的问题是我无法正确解析,并且最终的JSON没有嵌套的字典。函数是这样的:
def namefunction(field_string):
dfield01 = "1234567890"
dfield02 = "abcdefgh"
headers = { 'content-type': 'application/json', 'Accept-Charset': 'UTF-8' }
endpoint = "https://url.to.endpoint"
dataSend= { "dfield01": dfield01, "dfield02": dfield02 }
dataSend["field_string"] = json.loads(field_string)
r = request.post(url=endpoint, data=json.dumps(dataSend), headers=headers)
return HttpResponse(r, mimetype='aplication/javascript')
我在此函数中获得的字符串如下:
field_string = '{"0":"whatever 000","1":"whatever 001\nwhatever001b","2":"whatever 002\nwhatever 002b"}'
我正在使用Python2.7(无法更改)。
#### 2019-09-17更新
感谢您的建议@alex。我使用json.loads()做了类似的处理,但是当我尝试将输出放入另一个字典时,第一个字典丢失了他的格式。我将尝试举一个例子来解释:
有了这个...
# the same -> field = json.loads(field_string)
field = ast.literal_eval(field_string)
return HttpResponse(field, mimetype='application/javascript')
我在输出中得到JSON格式,但是如果我这样做了……
data = { "name_field": json.loads(field_string) }
...或这样:
data = { "name_field": ast.literal_eval(field_string) }
当我检查数据输出时,在值中得到一个字符串。我在做什么错了?
####
有任何线索吗?
致谢。
答案 0 :(得分:0)
这是一个很好的例子,说明为什么提供实际重现该问题的示例代码将是更好的方法。
使用代码时:
import json
field_string = '{"0":"whatever 000","1":"whatever 001\nwhatever001b","2":"whatever 002\nwhatever 002b"}'
data = { "name_field": json.loads(field_string) }
生成错误,您的代码无法运行。 "json.decoder.JSONDecodeError: Invalid control character at: line 1 column 38 (char 37)"
运行后,单字母更改(field_string
是原始字符串):
import json
field_string = r'{"0":"whatever 000","1":"whatever 001\nwhatever001b","2":"whatever 002\nwhatever 002b"}'
data = { "name_field": json.loads(field_string) }
看起来还好吗?