【发布时间】:2020-05-15 14:51:45
【问题描述】:
我正在尝试使用需要 JSON 来进行发布请求的 API。
在这里你可以看到我想要做什么:
using(var client = new HttpClient())
{
var jsonSettings = new JsonSerializerOptions
{
Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
WriteIndented = true
};
var content = new StringContent(JsonSerializer.Serialize(new MyObject(data), jsonSettings), Encoding.UTF8, "application/json");
var request = new HttpRequestMessage
{
RequestUri = new Uri(URL),
Content = content,
Method = HttpMethod.Post
};
request.Headers.Accept.Add( new MediaTypeWithQualityHeaderValue("application/json"));
var response = await client.SendAsync(request);
}
当我发送请求时,我得到了这个 JSON:
{
"email": "Tester \\u003Ctest@test.test\\u003E",
"text": "Lorem ipsum dolor sit amet, consectetuer adipiscing elit. \\r\\nAenean commodo ligula eget dolor. Aenean Massa."
}
如你所见,我得到了 \\u003C 之类的东西,而它需要是 \u003C
我不知道这是怎么发生的。我只能认为内容猫连载了两次。所以 \ 变成 \ 这打破了我的要求,因为电子邮件不符合标准。
如果您需要更多信息,请询问。 :)
【问题讨论】:
-
我想反斜杠已经被转义了,仅此而已。它当然不是对 JSON 进行双重序列化,如果是这样的话,它看起来会更糟。您无法正确反序列化它吗?
-
嗯,我发布的 JSON 文本就是我得到的。我的输入文本是这样的:电子邮件:“Tester
”和文本:“text \r\n text” -
好的。但我问,你不能正确反序列化它吗?如果您向我展示 JSON,那很好,但它没有被反序列化。那么如果你尝试反序列化它会发生什么?
-
所以我发现我无法反序列化它,因为我没有无参数的构造函数。
标签: c# json asp.net-core .net-core