Comment puis-je supprimer des caractères d'échappement de mon objet JSON être affiché dans un violon
Je tiens à sérialiser mon C# de l'objet à un objet JSON sans le texte final de la chaîne, y compris les caractères d'échappement.
La méthode ci-dessous est appelé par une bonne conception et retourne du JSON en objet, lorsqu'il est appelé par fiddler, cependant je voudrais enlever les barres obliques inverses de sorte qu'il ne comprend que les guillemets doubles et respecte le format 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);
}
Si j'utilise la concaténation, comme ci-dessous, puis l'objet s'affiche correctement sans la barre oblique inverse, mais je n'ai pas vraiment envie de faire ce qu'il semble être un plus compliqué pour écrire un objet.
public string Ping()
{
return "{Message" + ":" + "PONG" + "}";
}
"{Message:PONG}"
SerializeObject
sur la chaîne résultat de la sérialisation des model
.Êtes-vous à l'aide de l'API Web? Si oui, changer votre méthode de type de retour de Modèle et ensuite il suffit de retourner le modèle. L'API Web va sérialiser pour vous.
je ne sais pas si j'ai bien compris. Si je répète le processus de sérialisation-je obtenir deux fois plus de barres obliques inverses string s = JsonConvert.SerializeObject(modelFabrication); return JsonConvert.SerializeObject(s);
Bien sûr, je veux dire que je ne peux que les barres obliques, si je sérialiser modèle à deux reprises. Je suis ce qui suggère que votre résultat s'sérialisé de nouveau quelque part et c'est pourquoi vous voyez des barres obliques.
Merci pour votre commentaire, il a travaillé. Vous fixé mon problème d'une manière différente que je regardais. Vous devez mettre comme une réponse.
OriginalL'auteur beaumondo | 2013-06-26
Vous devez vous connecter pour publier un commentaire.
Si vous utilisez l'API Web, alors vous n'avez pas besoin d'appeler
JsonConvert.SerializeObject()
. Modifier le type de retour de votre méthode de votreModel
classe (au lieu destring
) et ensuite il suffit de retourner le modèle. L'API Web va sérialiser pour vous.Si vous regardez le code dans sa question, il est la création d'un objet appelé
Model
, puis de la sérialisation d'une chaîne et le retour de la chaîne. Je disais qu'il faut changer le type de retour de la méthode à sonModel
classe (au lieu de string), et puis il suffit de retourner l'objet sans sérialisation. Dans votre propre code, l'objet/classe que vous travaillez avec est probablement appelé quelque chose d'autre queModel
.OriginalL'auteur Brian Rogers
Mise à jour de votre chaîne de réponse que vous voulez, puis désérialiser et retour.
OriginalL'auteur Mehul Khatri