从包含多个JSON的字符串中解析JSON

时间:2018-08-09 11:42:31

标签: json json.net

第三方NuGet包会引发异常,并且在其异常消息中有一个错误和一个JSON对象:

Request failed, Message: {"Message":"Some error message"}

如何从字符串中提取JSON并获取Message属性?

我知道我可以使用Regex格式化字符串,然后再将其传递给反序列化器,甚至修剪文本直到第一个{

是否有使用Json.NET的更干净的方法?

1 个答案:

答案 0 :(得分:1)

否。

Json.Net用于解析JSON。如果字符串中包含非JSON的多余文本,则解析器将无法理解它。最好的选择是像在问题中建议的那样,在第一个大括号之前(和最后一个大括号之后)删除文本。您可以创建一个辅助方法来轻松实现此目的:

public static string ExtractJson(string text)
{
    int i = text.IndexOf('{');
    int j = text.LastIndexOf('}');
    return i > -1 && j > i ? text.Substring(i, j - i + 1) : null;
}

一旦提取了JSON,就可以像平常一样使用Json.Net。

提琴:https://dotnetfiddle.net/WoflVv