如何在JsonReaderException之后存储json字符串?

时间:2019-04-01 08:53:19

标签: c# .net json model-view-controller

在服务层中,当解析JSON字符串时,如果解析失败,则会向控制器抛出router.put('/edit', checkAuth, function (req, res, next) { if (req.userData.role === 'superadmin') { const { id, ...newUserData } = req.body; User.findOneAndUpdate({ _id: id }, {$set: newUserData}, ...); } else { /* ... */ } });

JsonReaderException

在Web层中的控制器中,捕获到该异常后,我想将该JSON字符串与异常消息一起存储在数据库中。

JObject jData = new JObject();

try
{
    jData = JObject.Parse(response.Content);
}
catch (JsonReaderException ex)
{
    throw ex;
}

我可以在服务层中执行此操作(这就是我最初的操作方式),但是由于依赖项注入,我将不得不向catch(JsonReaderException ex) { _exceptionLogService.LogException(new ExceptionLog() { Date = DateTime.Now, Message = ex.Message, Content = "json string (response.Content) goes here" } } 添加一个依赖项,然后在其中进行很多更改的地方。如果可能的话,我正在寻找一种更简单,更快捷的方法来在Web层中执行此操作。我将如何去做?

1 个答案:

答案 0 :(得分:0)

  

您的控制器未在您的代码中讨论,所以我不知道。如果   您的第二部分代码,对自己的部分进行新的例外   采用json字符串的参数,因此您可以将其传递给–   BugFinder 2小时前

我通过创建一个自定义JsonParseException(将JsonReaderException和一个字符串作为参数)并将其扔给控制器来解决了这个问题。不幸的是,我无法将评论标记为答案。

JObject jData = new JObject();
try
{
    jData = JObject.Parse(response.Content);
}
catch (JsonReaderException ex)
{
    throw new JsonParseException(ex, response.Content);;
}