我有一个类似
的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 :
现在我使用字符串解决方案(遍历数组并手动添加一些'''':'',''{}',如上所述,是否存在任何潜在问题?
答案 0 :(得分:1)
在.NET上处理JSON时有几种选择
例如,在第二种情况下,您可以简单地使用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,C
或Request.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是一个不错的解决方案。