私がこのC#辞書を持っているとしましょう:
Dictionary<string, object> Parameters { get; set; }
それから私はいくつかの値を中に入れます
Parameters["param1"] = "val1";
Parameters["param2"] = "val2";
そして最後に私はそれをシリアル化します
var serializer = new JsonSerializer();
var stringWriter = new StringWriter();
var writer = new JsonTextWriter(stringWriter);
writer.QuoteName = false;
writer.QuoteChar = '\'';
serializer.Serialize(writer, Parameters);
(もっと速い方法があることは知っていますが、引用符で囲まれた文字を一重引用符で引用符で囲まれていない名前にする必要があります)。
結果は期待どおりです。
{
param1: 'val1',
param2: 'val2'
}
しかし、関数またはオブジェクト名を表す可能性のある引用符で囲まれていない値を持つプロパティを含めたい場合はどうなりますか?たとえば、この結果を取得するにはどうすればよいですか。
{
param1: 'val1',
param2: 'val2',
funcReference: someFunctionName,
objName: valueWithoutQuotes
}
編集:
JSON構文に関するいくつかの応答が無効であるため、引用符で囲まないようにする必要がある理由を明確にしましょう。
JavascriptとHTMLデータバインディングにKnockoutjsを使用しています。したがって、私はこのようなものを書く必要があります-
<div data-bind="something: 'value', event: funcName">...</div>
HTMLを混乱させないように一重引用符が必要です。また、非常に一般的でJavascriptでは完全に問題のない個人的なスタイルのためにプロパティ名を引用しません(データ交換には使用していません)。
Knockoutが関数への参照であることを認識できるように、引用符で囲まれていない値が必要です。そうでない場合は、文字列として扱われます。また、サーバー上で生成している関数の名前、およびその他のプロパティと値。
もちろん、いつでも手動でJSONをビルドして連結することができますが、自動化された方法を探しています。
ありがとう!