将字典附加到另一个字典中并解析为JSON

时间:2019-09-16 14:54:25

标签: python json

我正在开发一个将字典作为字符串获取的函数,我需要追加到另一个作为字典的函数。之后,我需要像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) }

当我检查数据输出时,在值中得到一个字符串。我在做什么错了?

####

有任何线索吗?

致谢。

1 个答案:

答案 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) }

看起来还好吗?

相关问题