[英]How to access the elements of a stringified array in C#
我是編程的新手,所以請多多包涵。
背景
我創建了一個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”:“注釋文本2”; “ topCoord”:23.33; “leftCoord”:12.23}]}
問題:
我希望這是有道理的。 先感謝您。
創建一個可以反序列化的類:
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對象。
可以在http://james.newtonking.com/projects/json/help/中找到Json.net庫的文檔。
參數將作為字典數組到達您的方法。 為您的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服務的一些常規信息。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.