簡體   English   中英

如何在C#中訪問字符串化數組的元素

[英]How to access the elements of a stringified array in C#

我是編程的新手,所以請多多包涵。

背景

  1. 我創建了一個jQuery函數,用於拾取頁面上各種文本框的文本,頂部和左側坐標,我希望使用AJAX POST將所有這些信息傳遞給用C#編寫的Web服務。

  2. 我已經成功地將一個文本框的數據傳遞到了Web服務方法,並將一條記錄插入到SQL數據庫中(我不會花多長時間了!)。

  3. 為了寫多個文本框的數據,我正在使用一個包含對象數組的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});


});
  1. 警報變量jsonText我收到以下信息:

    {“ noteData”:[{“ noteText”:“這是注釋文本”; “ topCoord”:23.33; “ leftCoord”:12.23},{“ noteText”:“注釋文本2”; “ topCoord”:23.33; “leftCoord”:12.23}]}

問題:

  1. 這很棒! 但是,我如何在C#中的Web方法中“解碼”此數據,以便可以訪問每個數據,最終將每個Note“對象”的記錄寫入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對象。

可以在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM