正则表达式 C#:清除错误的 Json 字符串
Regular Expressions C#: Clean bad Json string
我从服务器得到这样的回答 JSON:
var zohozoho_atliview92 = {\"Itinerary\":[
{\"Client_Email\":\"garymc\",
\"Client_Name\":\"Gary\",
\"NT_Number\":\"NT-1237\",\"Number_of_Nights\":7,
\"ID\":\"24297940\",
\"Itinerary_Name\":\"Icelandnights\",
\"Tour_Template_Name\":\"Iceland FireDrive\",
\"Departure_Date\":\"2018-07-04\"}
]};
我需要删除这个:var zohozoho_atliview92 = {\"Itinerary\":[
并删除最后 3 个字符 ]};
以在我的对象中反序列化它。
如何使用正则表达式来实现?或者有更好的变体吗?
这不是 JSON,它是 Javascript(对象声明是 JSON)。
正则表达式很慢,我建议你使用 Substring
var start=inputString.IndexOf("[");
var end=("]");
var json=inputString.Substring(start, end-start);
可能会有一些错误,请测试并更正。
硬编码启动会更快但更弱。
is there a better variant?
是的,您可以将 json 转义字符串解析为 JObject
。
然后您可以使用 Querying JSON with LINQ
从 json 访问任何 key/value 对
或者您可以使用 var result = jObject.ToObject<T>();
将 JObject
映射到您的自定义类型
class Program
{
static void Main(string[] args)
{
var zohozoho_atliview92 = "{\"Itinerary\":[ {\"Client_Email\":\"garymc\", \"Client_Name\":\"Gary\", \"NT_Number\":\"NT-1237\",\"Number_of_Nights\":7, \"ID\":\"24297940\", \"Itinerary_Name\":\"Icelandnights\", \"Tour_Template_Name\":\"Iceland FireDrive\", \"Departure_Date\":\"2018-07-04\"}]}";
JObject jObject = JObject.Parse(zohozoho_atliview92);
Console.WriteLine(jObject);
Console.ReadLine();
}
}
输出:
我从服务器得到这样的回答 JSON:
var zohozoho_atliview92 = {\"Itinerary\":[
{\"Client_Email\":\"garymc\",
\"Client_Name\":\"Gary\",
\"NT_Number\":\"NT-1237\",\"Number_of_Nights\":7,
\"ID\":\"24297940\",
\"Itinerary_Name\":\"Icelandnights\",
\"Tour_Template_Name\":\"Iceland FireDrive\",
\"Departure_Date\":\"2018-07-04\"}
]};
我需要删除这个:var zohozoho_atliview92 = {\"Itinerary\":[
并删除最后 3 个字符 ]};
以在我的对象中反序列化它。
如何使用正则表达式来实现?或者有更好的变体吗?
这不是 JSON,它是 Javascript(对象声明是 JSON)。
正则表达式很慢,我建议你使用 Substring
var start=inputString.IndexOf("[");
var end=("]");
var json=inputString.Substring(start, end-start);
可能会有一些错误,请测试并更正。 硬编码启动会更快但更弱。
is there a better variant?
是的,您可以将 json 转义字符串解析为 JObject
。
然后您可以使用 Querying JSON with LINQ
从 json 访问任何 key/value 对或者您可以使用 var result = jObject.ToObject<T>();
JObject
映射到您的自定义类型
class Program
{
static void Main(string[] args)
{
var zohozoho_atliview92 = "{\"Itinerary\":[ {\"Client_Email\":\"garymc\", \"Client_Name\":\"Gary\", \"NT_Number\":\"NT-1237\",\"Number_of_Nights\":7, \"ID\":\"24297940\", \"Itinerary_Name\":\"Icelandnights\", \"Tour_Template_Name\":\"Iceland FireDrive\", \"Departure_Date\":\"2018-07-04\"}]}";
JObject jObject = JObject.Parse(zohozoho_atliview92);
Console.WriteLine(jObject);
Console.ReadLine();
}
}
输出: