如何在c#中访问字符串化数组的元素
本文关键字:数组 元素 字符串 访问 | 更新日期: 2023-09-27 18:11:01
我是一个编程新手,所以请原谅我。
-
我创建了一个jQuery函数,它可以拾取页面上各种文本框的文本,顶部和左侧坐标,我希望使用AJAX POST将所有这些信息传递给用c#编写的web服务。
-
我已经成功地将一个文本框的数据传递给web服务方法,并将一条记录插入SQL数据库(我不会进入这花了我多长时间!)。
-
为了写多个文本框的数据,我使用jQuery函数包含对象数组,为此我从第一个选项在以下帖子中获得了灵感:Jquery多维数组
function Note(noteText, topCoord, leftCoord) {
return {
noteText: noteText,
topCoord: topCoord,
leftCoord: leftCoord
}
var noteData = [];
function SaveNote() {
{'input').filter("notes").each(function(index) {
var noteText = ($this)).val();
var coord = ($this)).offset();
var topCoord = coord.top;
var leftCoord = coord.left;
noteData.push(Note(noteText,topCoord,leftCoord));
var jsonText = JSON.stringify({ noteData : noteData});
});
警告变量jsonText我收到以下内容:
{"noteData":[{"noteText":"这是笔记文本";"topCoord":23.33;"leftCoord":12.23},{"noteText":"Note text 2";"topCoord":23.33;"leftCoord":12.23}]}
问题:
- 这太棒了!但是我如何在c#的web方法中'解码'这些数据,以便我可以访问每个数据块,最终为每个notes '对象'写一个记录到SQL数据库。
我希望这有意义。
创建一个可以反序列化到的类:
public class Note()
{
public string noteText { get; set; }
public float topCoord { get; set; }
public float leftCoord { get; set; }
}
然后使用JavaScriptSerializer反序列化它:
var jsSer = new JavaScriptSerializer();
Note note = jsSer.Deserialize(json);
一种选择是在web服务中使用Json.net库。它是一个开源库,可以从http://json.codeplex.com/
下载。使用该库,您可以使用一行代码将Json字符串转换为Xml:
XmlDocument doc = (XmlDocument)JsonConvert.DeserializeXmlNode(json);
一旦您将其转换为XML,它应该很容易保存到数据库。或者,如果你愿意,你可以创建一个。net对象来表示Json数据,并使用库中的JsonSerializer类将Json文本反序列化到。net对象。
Json.net库的文档可以在http://james.newtonking.com/projects/json/help/
参数将以字典数组的形式到达您的方法。为您的WebMethod
使用以下原型(如果它位于web服务而不是页面方法中,请删除static
标识符):
[WebMethod]
public static void MyMethod(Dictionary<string, object>[] noteData)
从这里开始,您可以遍历每个数组成员并根据需要访问元素:
foreach (Dictionary<string, object> note in noteData) {
DataObject myDataObject = new DataObject();
myDataObject.noteText = note["noteText"];
...
}
如果你不习惯从JavaScript中获取数据到你的web服务,请查看这篇来自Encosia的有用文章,了解一些关于如何使用jQuery调用web服务的一般信息。