c# - 在 ASP.NET 和 C# 中的服务器端使用 JSON

标签 c# asp.net json

我有一个在客户端使用 JQuery 的 ASP.NET Web 表单。我有一个用户界面,它正在构建一个对象集合并将它们存储在 JSON 中。客户端实现完成后,我现在需要在用户单击按钮时处理该信息。单击此按钮后,我需要遍历该 JSON 集合并验证条目。我的问题是,我不确定该怎么做。

// Client-Side Code
var myCollection = {
  "data": [
  ]
};


// Server-Side Code
protected void myButton_Click(object sender, EventArgs e)
{
  // Parse JSON
}

集合中的每一项都存储在“数据”属性中。如何在服务器端循环遍历 JSON 集合?我想过将 JSON 数据放在一个隐藏的 HTML 元素中,但这听起来不太好,但我想出了一个好方法。

谢谢

最佳答案

如何将它发送到服务器由您决定 - 隐藏字段、AJAX 调用,随您喜欢。在服务器上获得字符串后,您需要做两件事:

  1. C# 服务器端表示 那个对象的
  2. 一个转换器去 从 JSON 到 C# 表示。

让我们稍微调整一下您的示例,因为示例中的“myCollection”是一个对象,而不是一个集合。所以我们将其称为 myObject。其次,我们假设“数据”是一个字符串数组。它可以是任何东西,但我们会保持简单。

var myObject = {
  data: ["string1","string2"]
};

我们还假设您使用的是 DataContractJsonSerializer,因此您可以轻松映射两种不同的大小写样式...JavaScript 通常是驼峰式大小写,而 C# 通常是 ProperCase。因此,在 C# 中,这将是:

[DataContract(Name="myObjectType")]
public class MyObjectType{
  [DataMember(Name="data")]
  public string[] Data { get; set; }
}

现在您有相同结构的两种表示形式,一种使用 C#,一种使用 JavaScript。要从一个转换为另一个,我们可以使用内置的 DataContractJsonSerializer,如下所示:

public static T Deserialize<T>(string json)
{
    using (MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(json)))
    {
      DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
      return (T)serializer.ReadObject(ms);
    }
}

...导致最终调用:

MyObjectType myObject = Deserialize<MyObjectType>(incomingString);

关于c# - 在 ASP.NET 和 C# 中的服务器端使用 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4367022/

相关文章:

asp.net - 动态创建和共享 Google 云端硬盘文件夹

javascript - Cookie 仅在不使用 JSON.stringify 时设置

c# - 从构建事件中调用方法

c# - 如何传递带有可选参数作为参数的方法?

c# - 右键单击 DataGridView 的列标题时,如何正确定位上下文菜单?

c# - ProcessStartInfo 在 PATH 环境变量中运行 exe

ASP.NET 页面生命周期 - 构造函数和 Page_PreInit 之间( "start stage")

c# - 如何通过 MVC 网站在引用 DLL 中托管 WCF 服务?

java - 如何使用我的 Android 应用程序使用 JSON 将参数发送到远程服务器。代码如下

javascript - 选择日期和来源最接近的对象