6

エスケープ文字を含む最終テキスト文字列なしで、C# オブジェクトを JSON オブジェクトにシリアル化したいです。

以下のメソッドは RESTful デザインを通じて呼び出され、フィドラーを通じて呼び出されると次の JSON オブジェクトを返します。

"{\"model\":\"Faslev\",\"platform\":\"ABC\",\"year\":2010,\"month\":\"June\", \"plant\":\"ONDH\",\"country\":\"Brazil\"}"

public string GetModelBySerialNumber(string serialNumber)
{
    var model = new Model();
    using (var connection = new SqlConnection(DBUtility.DbConnection))
    {
        try
        {                    
            SqlCommand myProcedure = new SqlCommand("myProcedure", connection);
            myProcedure.CommandType = CommandType.StoredProcedure;
            myProcedure.Parameters.Add("@SerialNumber", SqlDbType.NVarChar).Value = serialNumber;
            connection.Open();
            SqlDataReader dataReader = myProcedure.ExecuteReader();
            while (dataReader.Read())
            {
                Func<int, string> GetString =  (int i) => dataReader.GetString(i);
                Func<int, Int32> GetInteger = (int i) => dataReader.GetInt32(i);
                model.ModelName = GetString(0);
                model.Platform = GetString(1);
                model.Year = GetInteger(2);
                model.Month = GetString(3);
                model.Plant = GetString(4);
                model.Country = GetString(5);                                                
            }                    
        }
        catch (SqlException exception) {Trace.WriteLine("Error Trace " + exception.Message);}
        finally {connection.Close();}
    }
    return JsonConvert.SerializeObject(model);
}

以下のように連結を使用すると、オブジェクトはバックスラッシュなしで正しく表示されますが、オブジェクトを書き出す方法が複雑すぎるように思われるため、実際にはこれを行いたくありません。

public string Ping()
{
    return "{Message" + ":" + "PONG" + "}";
}

"{Message:PONG}"

4

2 に答える 2