我想将我的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);
}
如果我使用连接,如下所示,那么对象显示正确而没有反斜杠,但我真的不想这样做,因为它似乎是一种过于复杂的方式来写出一个对象。
public string Ping()
{
return "{Message" + ":" + "PONG" + "}";
}
"{Message:PONG}"
答案 0 :(得分:9)
如果您使用的是Web API,则无需致电JsonConvert.SerializeObject()
。将方法的返回类型更改为Model
类(而不是string
),然后只返回模型。 Web API将为您序列化它。
答案 1 :(得分:0)
根据需要更新您的响应字符串,然后反序列化并返回。
return Request.CreateResponse(HttpStatusCode.OK, JsonConvert.DeserializeObject(corr_str, new JsonSerializerSettings()));