【问题标题】:How can I access the data in the returned json in c#?如何在 c# 中访问返回的 json 中的数据?
【发布时间】:2019-01-16 14:55:54
【问题描述】:

我有一个方法abc()返回:

return Json(new { success = false, responseText = "Input-Values not valid" }, JsonRequestBehavior.AllowGet);

我在 ajax 调用(在 javascript 中)以及同一类中的另一个方法(在 c# 中)中使用此方法。 在 ajax 调用中,我可以检查是否成功 = true。

如何在 C# 中做到这一点?我必须在那里解析它吗?

我想做的事情是这样的:

public ActionResult xyz(string x, string y) { 
   ActionResult result= this.abc();
   //if result.success==false than get responseText and do something
}

【问题讨论】:

  • 我会重构代码,这样abcxyz 都可以访问实际数据,而不是json 操作结果。
  • 但是我有代码重复,因为我会将 abc() 中的代码复制到 xyz 中。
  • 为了避免代码重复,我可以制作第三种方法,其中包含 abc() 的代码,而不返回 ActionResult。两种方法都可以将其用于自己的目的,但不知道这是否是一个好的解决方案@WiktorZychla
  • 您首先误解了建议 - 是的,从两者中调用的第三种方法是这里的明显选择。

标签: c# json parsing


【解决方案1】:

有两个功能

private MyObject abc()
{
    //your going to have to create a MyObject class
    return new MyObject(){ success = false, responseText = "Input-Values not valid" };
}

public ActionResult ABC()
{
    return Json(this.abc());
}

那么它只是:

public ActionResult xyz(string x, string y) { 
   MyObject result= this.abc();
   if (result.success){

  }
}

private MyObject abc() 移动到一个新的逻辑类是一个很好的做法。这将有助于保持你的控制器“瘦”。

您似乎不太了解 C# 中的方法。我建议您对该主题进行更多阅读,例如https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/classes-and-structs/methods

【讨论】:

  • 我得到'对象不包含'responseText'的定义'用于执行私有对象abc()。该返回对象的有效类型是什么?
  • 无论你的对象是什么?您在代码中使用匿名类型,您将不得不创建一个类并返回它,因此MyObject
  • success 是一个布尔值,responseText 是一个字符串。私有 abc() 类 @Liam 不会返回其他对象
  • 您可以使用元组而不是显式声明一个新类,这不是一个非常有趣的类 ((bool success, string responseText))。当然,您必须先“解析”这个元组,然后才能从中生成 JSON 结果。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
  • 1970-01-01
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 2018-09-10
相关资源
最近更新 更多