如何从Fiddler中显示的JSON对象中删除转义字符

bea*_*ndo 5 c# rest json fiddler json.net

我想将我的C#对象序列化为JSON对象,而不包含包含转义字符的最终文本字符串.

下面的方法是通过RESTful设计调用的,并在通过fiddler调用时返回以下JSON对象,但我想删除反斜杠,因此它只包含双引号并尊重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);
}
Run Code Online (Sandbox Code Playgroud)

如果我使用连接,如下所示,那么对象显示没有反斜杠,但我真的不想这样做,因为它似乎是一个过于复杂的方式来写出一个对象.

public string Ping()
{
    return "{Message" + ":" + "PONG" + "}";
}
Run Code Online (Sandbox Code Playgroud)

"{Message:PONG}"

Bri*_*ers 9

如果您使用的是Web API,则无需致电JsonConvert.SerializeObject().将方法的返回类型更改为您的Model类(而不是string),然后只返回模型.Web API将为您序列化它.

  • @Gandarez如果你看一下他的问题中的代码,他正在创建一个名为`Model`的对象,然后将其序列化为字符串并返回字符串.我说他应该将方法的返回类型更改为他的`Model`类(而不是字符串),然后只返回该对象而不将其序列化.在您自己的代码中,您正在使用的对象/类可能被命名为"Model"以外的东西. (3认同)
  • “将方法的返回类型更改为模型”是什么意思?我有同样的问题。但是不知道“模型”是什么意思。 (2认同)