2016-09-16 2 views
-1

パブリッククラスの一部私は、dataTablesプラグインのデータ構造を構築しています。C#JSONエラーへの文字列の変換

データ構造を構築するためのコードは次のとおりです。

 var response = "{ \"data\": ["; 
      response = response + "["; 
      response = response + "\"Clark, Keith\","; 
      response = response + "\"Corporate\","; 
      response = response + "\"XXX-XXX-XXXX\","; 
      response = response + "\"XXX-XXX-XXXX\","; 
      response = response + "\"[email protected]\""; 
      response = response + "],"; 
      response = response + "["; 
      response = response + "\"Clark, Keith\","; 
      response = response + "\"Corporate\","; 
      response = response + "\"YYY-YYY-YYYY\","; 
      response = response + "\"YYY-YYY-YYYY\","; 
      response = response + "\"[email protected]\""; 
      response = response + "]"; 
     response = response + "] }"; 

     return response; 

これは正常に動作し、期待通りにテーブルを作成します。私が問題に取り組んでいるところは、フィールドにHTMLマークアップを追加しようとするときです。私はこのような状況を示すために、名前の隣にあるフォント素晴らしいアイコンを使用したい:私は読むために自分のコードを修正しようとしている

<i class="fa fa-arrow-up" style="color: #00ff00;" aria-hidden="true"> 

response = response + "\"<i class=\"\"fa fa-arrow-up\"\" style=\"\"color: #00ff00;\"\" aria-hidden=\"\"true\"\">Clark, Keith\","; 

をしかし、今、私はエラーが発生しますことJSONの形式が正しくありません。 HTMLマークアップがJSON構造内で使用されないことがありますか?

+0

あなたは何も欠けていない、htmlマークアップは有効なJSONではありません。 JSON文字列は完全に自己完結型でなければなりません。 –

+0

jsonにその新しいものを投稿してください。あなたは最後の締め切り後に追加しようとしていませんか? – Dispersia

+0

@JonathonChaseそこにhtmlを入れても何の問題もありません.HTMLはちょうどJSONがうまくいく静的テキストです。 – Dispersia

答えて

0

問題は、無効なjson文字列リテラルを生成していることです。

"<i class=""fa fa-arrow-up"" style=""color: #00ff00;"" aria-hidden=""true"">Clark, Keith", 

引用符は、二重ではなくリテラルのバックスラッシュを使用してエスケープされます。

あなたは代わりにこれをしなければならなかっただろう:

"\"<i class=\\\"fa fa-arrow-up\\\" style=\\\"color: #00ff00;\\\" aria-hidden=\\\"true\\\">Clark, Keith\"," 

まさにあなたは、このような文字列を生成してはならない理由は示しています。あなたのためにこれを行うことができ、安全に使用できるツールがあります。 Json.netはこれを簡単に解決します。それと

var markup = "<i class=\"fa fa-arrow-up\" style=\"color: #00ff00;\" aria-hidden=\"true\">"; 
var response = new JObject 
{ 
    ["data"] = new JArray 
    { 
     new JArray 
     { 
      markup + "Clark, Keith", 
      "Corporate", 
      "XXX-XXX-XXXX", 
      "XXX-XXX-XXXX", 
      "[email protected]", 
     }, 
     new JArray 
     { 
      markup + "Clark, Keith", 
      "Corporate", 
      "YYY-YYY-YYYY", 
      "YYY-YYY-YYYY", 
      "[email protected]", 
     }, 
    } 
}; 
return response.ToString(); 

あなたのデータにマークアップを追加すべきではない、と述べました。データはデータであり、何もありません。表示方法に影響を与えたい場合は、そのマークアップをビューに追加する必要があります。

関連する問題