JSON オブジェクトを二重シリアル化しているかどうかはわかりませんが、出力が望ましくない形式になります。ArcGIS Server Object Extension (REST SOE) を介して REST エンドポイントを公開しています。最近、JSON.Net も実装しました。これにより、実質的に数行のコードを削除することができました。
これは、サービスのデータを作成するコア部分です (GIS 以外のユーザー向け)。
private byte[] SearchOptionsResHandler(NameValueCollection boundVariables, string outputFormat, string requestProperties, out string responseProperties)
{
responseProperties = null;
JsonObject result = new JsonObject();
// Towns
DataTable dataTableTowns = GetDataTableTowns();
String jsonStringTowns = JsonConvert.SerializeObject(dataTableTowns);
result.AddString("Towns", jsonStringTowns);
// GL_Description
DataTable dataTableGLDesc = GetDataTableGLDesc();
String jsonStringGLDesc = JsonConvert.SerializeObject(dataTableGLDesc);
result.AddString("GLDesc", jsonStringGLDesc);
return Encoding.UTF8.GetBytes(result.ToJson());
}
結果は醜いスケープされた JSON です:
{
"Towns": "[{\"Column1\":\"ANSONIA\"},{\"Column1\":\"BETHANY\"},{\"Column1\":\"BLOOMFIELD\"}]",
"GLDesc": "[{\"Column1\":\"Commercial\"},{\"Column1\":\"Industrial\"},{\"Column1\":\"Public\"}]"
}
なんとなく二重連載しているからでしょうか。ご覧いただきありがとうございます。