2016-11-23 6 views
0

C#で文字列の二重引用符をエスケープしようとしていますが、期待通りに動作しません。C#エスケープダブルクォートが期待どおりに動作しない

public JObject GetIndicatorsAsJSON() 
{ 

    String Test = ""; 

    foreach (var ARow in db.IPMSApp_TestGridView) 
    { 
     Test += ",{ \"indicator\" : \"" + ARow.indicator + "\", \"type\": \"" + ARow.type + "\\"}"; 
    } 

    Test = "[" + Test.Substring(1, Test.Length - 1) + "]"; //Strip out first comma 

    JObject json = JObject.Parse(Test); 

    return json; 
} 

私はこれを実行しようとすると、私は(私は一種の予想)エラーを取得しますが、コンソールウィンドウに「テスト」変数の内容を確認の上私は - :私のコードは次のようになります(私がそれらをエスケープしたので)二重引用符を見るのではなく、代わりに "\"を見ていることを確認してください。

たとえば、テスト文字列変数の出力は次のようになります -

[{"インジケータ": "アクティビティ - 最初"}]

しかし、その代わりに、それは次のようになります -

[{\ "インジケーター\":\ "活動 - 第一\"}]

私は二重引用符をエスケープしていますどのように間違って何かをやっていますか?私は逐語的な文字列リテラルを使ってみましたが、私はまだ同じ問題があります。

+0

いいえ、それは結構です、それはエスケープ引用符で文字列だけでどのようにコンソールが出力されます。あなたのJSONエラーは何ですか? – musefan

+1

あなたは配列である '[]'でラッピングしているようですが、代わりに 'JArray.Parse(Test);'を試しましたか? – musefan

+0

JsonReaderからJObjectを読み取る際にエラーが発生しました。現在のJsonReaderアイテムはオブジェクトではありません:StartArray。 Path ''、1行目、1位。 –

答えて

1

エスケープを引用しても何も問題はありません。コンソールはその形式で出力しますが、紛らわしいです(紛らわしいですが)。

JSONの解析に問題があると思います。あなたは配列内にオブジェクトをラップしているよう[]あなたの代わりに、次を使用する必要があります。

JArray json = JArray.Parse(Test); 
関連する問題