在.NET中使用的Python和REST API,JSON看起来很奇怪

在.NET中使用的Python和REST API,JSON看起来很奇怪,python,.net,json,python-3.x,hug,Python,.net,Json,Python 3.x,Hug,使用.net中的REST端点时,JSON具有嵌入字符。下面是一个完全失败的例子。非常感谢您的帮助 蟒蛇 @hug.post('/test') def test(response, body=None): input = body.get('input') print('INSIDE TEST ' + input) if input: dict = {"lastname":"Jordan"} dict["firstname"] = inpu

使用.net中的REST端点时,JSON具有嵌入字符。下面是一个完全失败的例子。非常感谢您的帮助

蟒蛇

@hug.post('/test')
def test(response, body=None):
    input = body.get('input')
    print('INSIDE TEST ' + input)

    if input:
        dict = {"lastname":"Jordan"}
        dict["firstname"] = input
        return json.dumps(dict, sort_keys=True, default=str)
.NET(只能使用.NET 3.5)

responseString如下所示:

"\"{\\\"firstname\\\": \\\"Mike\\\", \\\"lastname\\\": \\\"Jordan\\\"}\""
JObject.Parse抛出错误:

Newtonsoft.Json.JsonReaderException: 
'Error reading JObject from JsonReader. Current JsonReader item is not an object: String. Path '', line 1, position 53.
解决方法-如果我对responseString JObject正确解析执行了类似的可怕操作:

str = str.Replace("\\", "");
str = str.Substring(1, len - 2);

发生了什么?

默认拥抱是json;无需调用
json。在返回值时转储
,hug将自动执行此操作。

看起来是双重编码的-如果view函数只返回一个
dict
,会发生什么情况?你真棒!非常感谢你。不能告诉你我在这上面浪费了多少时间-啊。是的,JSON自动将返回值序列化为默认输出格式,这很酷。请将此作为答案发布,我会将其标记为已回答。再次感谢!!好的一面是,我发布了一个连接两个世界的迷你教程;)python的响应被序列化了两次,谢谢你。你是对的。
str = str.Replace("\\", "");
str = str.Substring(1, len - 2);