簡體   English   中英

c#API“解析值:S.Path”時遇到意外字符,第0行,位置0”

[英]c# API “Unexpected character encountered while parsing value: S. Path '', line 0, position 0”

我使用c#編碼的多個API效果很好。 我想使用一個接收匿名對象的對象(我不想創建一個類)。 嘗試反序列化對象時遇到問題。

我有一個遵循此方案的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>等待一個字符串,我嘗試過:

-在myMethod的參數objectSentByUser指定為字符串時,我什至沒有輸入方法就得到了400(我嘗試發送JSON,添加引號,發送字符串等。)

-使用(string)objectSentByUser ,它不起作用

-使用toString()方法,這將導致下一個錯誤:解析值:S時遇到意外字符。路徑”,行0,位置0,這很正常,因為objectSentByUser.toString()返回“ System.Object” (但是為什么與python json_dump一起使用時會起作用?)

當使用python函數json_dump調用此代碼時,該代碼可返回如下對象:

“ {\\\\” key1 \\\\“:\\\\” value1 \\\\“,...}”

從郵遞員,我發送了一個經典的POST,其中application/jsoncontentType ,主體中帶有有效的JSON (已在另一個關於stackoverflow的討論中找到的網站上進行了驗證)

非常感謝你的幫助

再見

如果用戶向您的操作發送了有效的json字符串,則不接受對象作為參數,而是接受字符串(即,因為您的用戶向您發送了一個)。

如果在對象上調用ToString() ,則可能不是Json格式。

嘗試接受一個字符串並將其反序列化:

[WebInvoke(Method = "POST", UriTemplate = "myUrl")]
[OperationContract]
public Message myMethod(string jsonSentByUser)
{

    var perso = JsonConvert.DeserializeObject<dynamic>(jsonSentByUser);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM