2012-02-08 6 views
1

こんにちはスラッシュ...ASP.NET 4.0 JSON - 削除エスケープは、私がここに壁に頭を打ってる

私は私のデータベースから取得していたデータをエンコードするためにDataContractJsonSerializerを使用しています

public static string ToJSON<T>(this T obj) where T : class 
    { 
     DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T)); 
     using (MemoryStream stream = new MemoryStream()) 
     { 
      serializer.WriteObject(stream, obj); 
      return Encoding.Default.GetString(stream.ToArray()); 
     } 
    } 

と私はASMXからそれを呼んでいる:

return _webServiceService.GetSponsors().ToJSON(); 

私はこの拡張機能を持っている... AJAX呼び出しに送り返すメートルそれは、すべての作業はちょっとこれを除いて、作業だEntity Frameworkの

を使用してストアドプロシージャから結果セットを渡す

が返されているものの一部です:

{"d":"[{\"FileID\":296,\"IconUrl\":\"\\/Files\\/Banners\\/20119\\/00B56BAC.jpg\",\"ImageUrl\":.... 

どのように私はそうスラッシュを取り除くために、地球上次を返します:

{"d":"[{"FileID":296,"IconUrl":"/Files/Banners/20119/00B56BAC.jpg","ImageUrl":.... 

私はJQuery UIオートコンプリートを実装しようとしています。まあ、私は引用符内のFileID値が必要かどうか、これを並べ替えるだろうと思いますか?

+0

これはMVCアプリケーションですか? – tawman

+0

いいえ、MVPです...少しコードを投稿します – Ianc22

答えて

1

ASP.NET will handle it for you automatically in that scenarioのようにJSONで戻り値を手でシリアル化する必要はありません。あなたが見ているのは、手動で生成された文字列にJSONシリアライゼーションの第2レベルを適用するASP.NETです。この場合、バックスラッシュで二重引用符をエスケープする必要があります。

ASMXメソッドを変更して、List<Sponsor>などを返し、_webServiceService.GetSponsors()をToJSON()拡張なしで直接返します。

+0

ありがとうDave ...!私は今、そんなにうんざりしているように感じる..ソート! – Ianc22

+0

@ Ianc22:あなたは悪くはありません。それは非常に一般的な間違いです。 ASP.NETがここであなたのためにJSONの仕事を処理することは明白ではありません。だからあなた自身がそれを行う必要があると仮定するのは当然です。 –

関連する問題