Je reçois une réponse JSON de tiers que je ne peux pas contrôler. Parfois, cette réponse jette des caractères illégaux à la fin de la chaîne. Voici un exemple de correct.Supprimer un caractère illégal de la chaîne JSON avant de désérialiser dans C#
{
"result": [
{
"parent": "",
"made_sla": "true",
"caused_by": "",
"watch_list": "",
"upon_reject": "cancel",
"sys_updated_on": "2016-09-13 19:00:01",
"approval_history": "",
"category": "SPIN Station"
}
]
}
Un exemple de chaîne incorrecte. Ici, vous pouvez enfin voir qu'il ajoute une virgule au lieu de la fermer.
{
"result": [
{
"parent": "",
"made_sla": "true",
"caused_by": "",
"watch_list": "",
"upon_reject": "cancel",
"sys_updated_on": "2016-09-13 19:00:01",
"approval_history": "",
"category": "SPIN Station"
}
],
Voici mon code en C#. Quelqu'un peut-il dire comment remplacer la virgule illégale avec fermeture accolade dans la chaîne de valeur de réponse dans le code ci-dessous avant désérialisation
WebRequest req = WebRequest.Create(@"https://aaaa.service-now.com/api/now/table/incident?sysparm_query=sys_updated_onBETWEENjavascript:gs.dateGenerate('2016-09-10','00:00:00')@javascript:gs.dateGenerate('2016-09-13','23:59:59')");
req.Method = "GET";
req.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes("username:Password"));
req.ContentType = "application/xml";
HttpWebResponse resp = req.GetResponse() as HttpWebResponse;
var responseValue = string.Empty;
using (var responseStream = resp.GetResponseStream())
{
if (responseStream != null)
using (var reader = new StreamReader(responseStream))
responseValue = reader.ReadToEnd();
}
JavaScriptSerializer ser = new JavaScriptSerializer();
ser.MaxJsonLength = 2147483647;
ser.RegisterConverters(new List<JavaScriptConverter> { new ResultConverter() });
RootObject ro = ser.Deserialize<RootObject>(responseValue);
L'étape 1 consiste à repousser durement contre l'entreprise qui vous donne de mauvaises données, pour réparer leurs affaires. S'ils ne construisent pas correctement un JSON, il y a de fortes chances qu'ils construisent la chaîne manuellement. Il est donc fort possible qu'ils bousillent également d'autres règles JSON, que vous ne pouvez pas prédire ou contourner. –
Etes-vous sûr de ne pas avoir de msg partiel? – Plutonix
Mais cette erreur vient aléatoirement, parfois elle jette et parfois pas, je pense que c'est quelque chose avec C# que l'envoi de l'entreprise. Nous obtenons 50 000 enregistrements et 85 champs pour chaque enregistrement. –