gpt4 book ai didi

c# - 在 C# 中反序列化之前从 JSON 字符串中删除非法字符

转载 作者:太空宇宙 更新时间:2023-11-03 15:14:34 24 4
gpt4 key购买 nike

我收到来自第三方的 JSON 响应,这是我无法控制的。有时此响应会在字符串末尾抛出非法字符。这是正确的示例。

{
"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"
}
]
}

错误字符串的例子。在这里您终于可以看到它抛出额外的逗号而不是结束。

{
"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"
}
],

这是我的 C# 代码。谁能告诉我如何在反序列化之前用下面代码中的响应值字符串中的右大括号替换非法逗号

 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);

最佳答案

我看到您正在连接到 ServiceNow。如果您收到格式错误的 JSON 字符串,那就很奇怪了——我会向 hi.service-now.com 提出请求

如果你确实需要纠正你的那一边,那么在反序列化之前操纵你的 responseValue。

 if (responseValue.Substring(responseValue.Length-2, 2)=="],") {
responseValue = responseValue.Remove(str.Length -1, 1) + "}";
}

附注我没有测试过 - 您需要仔细查看输入的 JSON 字符串以确保没有尾部空格。

关于c# - 在 C# 中反序列化之前从 JSON 字符串中删除非法字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39538637/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com