gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:24:52 26 4
gpt4 key购买 nike

我有一个在客户端使用 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com