c#API"Unexpected character encountered while parsing value: S. Path '', line 0, position 0"
c# API "Unexpected character encountered while parsing value: S. Path '', line 0, position 0"
我使用多个 API 用 c# 编码的,效果很好。我想使用一个接收匿名对象的方法(我不想创建 Class)。当我尝试反序列化对象时遇到问题。
我有一个遵循此方案的 API,当使用 json_dumps
函数从 python
调用它时效果很好。但是当我尝试使用 JSON.stringify
(来自 a 甚至 POSTMAN 时,我有一个 400 错误的请求。
这是我的代码,我尝试了很多东西:
[WebInvoke(Method = "POST", UriTemplate = "myUrl")]
[OperationContract]
public Message myMethod(object objectSentByUser)
{
var perso = JsonConvert.DeserializeObject<dynamic>(objectSentByUser.ToString());
JsonConvert.DeserializeObject<dynamic>
等一个字符串,我试过:
-将objectSentByUser
指定为myMethod
参数中的字符串
当我这样做时,我什至没有输入方法就得到了 400(我尝试发送 JSON、添加引号、发送字符串等...)
-用(string)objectSentByUser
投射,它不起作用
——使用toString()
方法,导致下一个错误:
解析值时遇到意外字符:S.路径“”,第 0 行,位置 0
这很正常,因为 objectSentByUser.toString()
returns "System.Object"
(但为什么它与 python json_dump 一起使用时有效?)
此代码在使用 python 函数 json_dump 调用时有效,returns 对象如下:
"{\\"key1\":\\"value1\",...}"
我从 Postman 发送了一个经典的 POST,application/json
为 contentType
,正文中有一个有效的 JSON
(在另一个讨论中找到的网站上验证过计算器)
非常感谢您的帮助
再见
如果用户向您的操作发送了有效的 json 字符串,则不要接受对象作为参数,而是接受字符串(即因为您的用户向您发送了一个)。
如果您在对象上调用 ToString()
,很可能它不是 Json
格式。
尝试接受一个字符串并将其反序列化:
[WebInvoke(Method = "POST", UriTemplate = "myUrl")]
[OperationContract]
public Message myMethod(string jsonSentByUser)
{
var perso = JsonConvert.DeserializeObject<dynamic>(jsonSentByUser);
我使用多个 API 用 c# 编码的,效果很好。我想使用一个接收匿名对象的方法(我不想创建 Class)。当我尝试反序列化对象时遇到问题。
我有一个遵循此方案的 API,当使用 json_dumps
函数从 python
调用它时效果很好。但是当我尝试使用 JSON.stringify
(来自 a 甚至 POSTMAN 时,我有一个 400 错误的请求。
这是我的代码,我尝试了很多东西:
[WebInvoke(Method = "POST", UriTemplate = "myUrl")]
[OperationContract]
public Message myMethod(object objectSentByUser)
{
var perso = JsonConvert.DeserializeObject<dynamic>(objectSentByUser.ToString());
JsonConvert.DeserializeObject<dynamic>
等一个字符串,我试过:
-将objectSentByUser
指定为myMethod
参数中的字符串
当我这样做时,我什至没有输入方法就得到了 400(我尝试发送 JSON、添加引号、发送字符串等...)
-用(string)objectSentByUser
投射,它不起作用
——使用toString()
方法,导致下一个错误:
解析值时遇到意外字符:S.路径“”,第 0 行,位置 0
这很正常,因为 objectSentByUser.toString()
returns "System.Object"
(但为什么它与 python json_dump 一起使用时有效?)
此代码在使用 python 函数 json_dump 调用时有效,returns 对象如下:
"{\\"key1\":\\"value1\",...}"
我从 Postman 发送了一个经典的 POST,application/json
为 contentType
,正文中有一个有效的 JSON
(在另一个讨论中找到的网站上验证过计算器)
非常感谢您的帮助
再见
如果用户向您的操作发送了有效的 json 字符串,则不要接受对象作为参数,而是接受字符串(即因为您的用户向您发送了一个)。
如果您在对象上调用 ToString()
,很可能它不是 Json
格式。
尝试接受一个字符串并将其反序列化:
[WebInvoke(Method = "POST", UriTemplate = "myUrl")]
[OperationContract]
public Message myMethod(string jsonSentByUser)
{
var perso = JsonConvert.DeserializeObject<dynamic>(jsonSentByUser);