如何用.NET存储json数组?

时间:2011-08-30 11:59:38

标签: javascript asp.net arrays json

我有一个类似

的json数组
[{"name":"A","value":"A"},{"name":"B","value":"B"},{"name":"C","value":"C"}]

我如何通过asp.net传递(到后端)并存储(在db中)那个javascript对象?

修改

确定更清楚,在某些页面中,我有一个javascript对象

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

,我怎样才能将它传递给某个处理程序(比如使用

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

??),然后在后端如何将其保存到数据库中或稍后加载此数组?

如果你教我如何转换

,我将不胜感激
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

现在我使用字符串解决方案(遍历数组并手动添加一些'''':'',''{}',如上所述,是否存在任何潜在问题?

4 个答案:

答案 0 :(得分:1)

在.NET上处理JSON时有几种选择

  • 您可以简单地将数组保留在数据库中并按原样检索并使用它
  • 您可以使用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.
       });

使用A,B,CRequest.Form["name"]请求数据时,这将转换为Request["name"],因此您应首先更改所有命名约定,然后您可以简单地使用Request["nameA"]Request["nameB"]等......

答案 1 :(得分:0)

您可以像存储在数据库中的任何其他字符串一样存储它。如果您希望稍后在JavaScript中重新实例化它,请使用字符串上的eval()函数将其转换回对象。

答案 2 :(得分: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);
    }
}

答案 3 :(得分:0)

好的,事实证明使用JSON.parse和JSON.stringify是一个不错的解决方案。