2016-07-08 21 views
0

私は複数のAPIを使用しています。私は匿名のオブジェクトを受け取る(私はクラスを作成したくない)を使いたい。オブジェクトをデシリアライズしようとすると問題が発生します。c#API "値の解析中に予期しない文字が見つかりました:Sパス"、行0、位置0 "

私はこのスキームに従ったAPIを持っていますが、それはjson_dumps関数を使用してpythonから呼び出されたときにうまく機能します。 。私は(AあるいはPOSTMANから、私は400不正な要求を持っているJSON.stringifyにしようとすると、

ここに私のコードです。しかし、私は多くのことを試してみました:stringの

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

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

JsonConvert.DeserializeObject<dynamic>待機を、私が試した:

を私がそうするとき、私もこの方法を入力せずに400を持っているmyMethod の引数に文字列としてobjectSentByUserを指定-to(私が、引用符を追加するには、JSONを送信しようとしました文字列を送信するなど)

-toキャスト、それは

次のエラーにつながるtoString()方法、使用-to動作しません:位置0、S.パス「」、行0:値を解析中に遭遇した 予期しない文字を

:このようなオブジェクトを返すPythonの関数json_dumpで呼び出されたときにこのコードが動作する

(?Pythonのjson_dumpで使用した場合しかし、なぜそれが動作しない) 「System.Objectの」objectSentByUser.toString()戻りますので、非常に正常である

"{\\" key1 \\ ":\\" value1 \\ "、...}"ポストマンから

私が(stackoverflowの上の別の議論で見つかったウェブサイト上で確認さ)、本体にあなたの助け

参照してください

おかげで多くのことをcontentType、有効なJSONとしてapplication/jsonクラシックPOSTを送信ユーザー

答えて

1

ユーザーが有効なjson文字列をアクションに送信した場合は、パラメータとしてオブジェクトを受け入れないでください。ユーザーがあなたに1つを送信するため)。

ToString()をオブジェクトに呼び出すと、Json形式ではない可能性があります。

文字列を受け入れて、それをデシリアライズしてみてください。ご返信用

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

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

感謝を。 コンテンツタイプapplication/jsonとJSONオブジェクトを含むPOSTMANをAPIに使用すると、400の不正リクエストが発生し、myMethodも入力しません。 私はこの方法でフォーマットされたオブジェクトを送信するときにそれが動作: 「{\」KEY1の\「:\」VALUE1 \「...}」私はpythonのダブルバックスラッシュはないと試みた理由 が分かりません単一のバックスラッシュで.. – heythere

関連する問題