2011-08-30 95 views
1

我有一個JSON數組像如何使用.NET存儲json數組?

[{"name":"A","value":"A"},{"name":"B","value":"B"},{"name":"C","value":"C"}] 

如何傳遞(到後端),並存儲(單位爲dB),與asp.net javascript對象??

編輯:

確定以使其更清晰,在某些頁面,我得到一個JavaScript對象

var array = [{"name":"A","value":"A"},{"name":"B","value":"B"},{"name":"C","value":"C"}]; 

,我怎樣才能將它傳遞給一些處理(如使用

`$.post({url:"handler.ashx", data:array}) 

??),那麼在後端如何將它保存到數據庫或稍後加載此數組?

OR

,我會很感激,如果ü教我如何

var array = [{"name":"A","value":"A"},{"name":"B","value":"B"},{"name":"C","value":"C"}]; 

轉換成:

var arraystring = '[{"name":"A","value":"A"},{"name":"B","value":"B"},{"name":"C","value":"C"}]'; 

EDIT2

現在我使用字符串解決方案(遍歷數組,並手動添加一些'''':'',''{}'),就像我上面提到的那樣,是否有任何潛在的問題?

+0

你想如何存儲它?作爲一個JSON字符串,作爲單獨的記錄?如果您還可以顯示相關的目標數據庫模式,這將有所幫助 –

+0

您正在提出一個非常寬泛的抽象問題。 1)如何做ajax,2)如何將JSON轉換爲.net類/對象; 3)如何將對象存儲在數據庫中。您可能會問「如何創建Web應用程序」。嘗試更具體一點。到目前爲止你做了什麼?你使用什麼技術 - 數據庫,jQuery等。 –

+0

ASP.NET Webforms或MVC? – balexandre

回答

1

您有JSON在.NET打交道時,幾個選項

  • 你可以簡單地保持數組是在數據庫和檢索原樣,並用它
  • 你可以解析到一個對象在第二種情況使用JSON.NET Library

比如你簡單的使用方法JSON.NET:

Newtonsoft.Json.Converters.KeyValuePairConverter 

或者喜歡並使用Custom Deserialize,因爲從JSON傳入和傳出很容易。


讓我們想象一下,你要留言是這樣的:

$.post("myForm.aspx", 
     [{"name":"A","value":"A"},{"name":"B","value":"B"},{"name":"C","value":"C"}], 
     function() { 
      // all done. 
     }); 

使用Request.Form["name"]或者乾脆Request["name"]所以你應該先改變所有的命名約定請求數據時,這將被轉換爲A,B,C你可以簡單的使用Request["nameA"],Request["nameB"]等...

+1

還有至少兩個框架JSON序列化器在大多數情況下都很好用,即JavascriptSerializer和DataContractJSONSerializer。對牛頓軟件沒有任何反應,我已經使用它和它的優秀,但它也是一個不需要的依賴,用於很多目的。 –

+0

我從一開始就使用Newtonsoft,沒有什麼比這更好的了,這就是爲什麼我要依賴它:) – balexandre

0

您可以像存儲在數據庫中的任何其他字符串一樣來存儲它。如果您想稍後在JavaScript中重新實例化它,請使用字符串上的eval()函數將其轉換回對象。

+0

但現在,它不是一個字符串,不是嗎?我怎麼把它傳遞給後端?當我使用$ .post時,它無法工作。 – rhapsodyn

0

要做到這一點,最好的方法是將json解序列化爲對象並將其保存爲db作爲記錄。

檢查JSON.NET庫http://json.codeplex.com/

public class MyObj 
{ 
    public string name{get;set;} 
    public string value{get;set;} 
} 

void Main() 
{ 
    string json ="[{\"name\":\"A\",\"value\":\"A\"},{\"name\":\"B\",\"value\":\"B\"},{\"name\":\"C\",\"value\":\"C\"}]"; 
    IList<MyObj> arr = JsonConvert.DeserializeObject<IList<MyObj>>(json); 

    foreach(MyObj o in arr) 
    { 
     //add each object to db... 
     Console.WriteLine(o.name+":"+o.value); 
    } 
} 
0

好的事實證明,使用JSON.parse與JSON.stringify是一個不壞的解決方案。