2017-02-09 20 views
1

データを返すWebメソッドがあります。 ヌルやその他の目的を無視するために、オブジェクトをjsonにシリアル化するための特定のコードがあります。WebMethodがjsonレスポンスをシリアル化するのを防ぐ方法

何が起こるかというと.NETは再びそうREPONSEをserialisesことです:

オブジェクト= {a:2}

初シリアライゼーション= {"a": "2"}

セカンドシリアライゼーション= "{\"a\": \"2\"}"

どのように私はから.NETを防ぐことができます2回目の応答をシリアライズする。

コード:

[WebMethod] 
[ScriptMethod(ResponseFormat = ResponseFormat.Json)] 
public static object XXX() 
{ 
    return new { a = 2 }.ToJson(); 
} 
+1

'return new {a = 2};'あなたは何を得ますか? – Madenis

答えて

2

.ToJson()呼び出しが不要である - それを削除します。

[WebMethod] 
public static object XXX() 
{ 
    return new { a = 2 }; 
} 

をこの理由は、Web API serializes to JSON by default次のとおりです。

シリアル化を取得しますか?

デフォルトでは、すべてのパブリックプロパティとフィールドはシリアル化されたJSONに含まれています。プロパティまたはフィールドを省略するには、JsonIgnore属性で修飾します。

明示的に無視し、あるいは特定のメディアフォーマッタが(Content-Typeリクエストヘッダを経由して)クライアントによって呼び出されない限り、あなたの戻り値の型はJSONにシリアライズされます。二重シリアル化は、追加の.ToJson()呼び出しのために発生しました。

ScriptMethodAttribute.ResponseFormat propertyのデフォルト値はJSONであるため、ScriptMethod属性も不要です。

+0

私が述べたように、私は特定のシリアル化コードを持っています。私は自分でシリアル化したい。 – Daniel