任何人都可以帮助我。
我有一个HTML页面。此页面包含FirstName,MiddleName,LastName等的文本框。
在这个HTML页面的按钮clcik上,我正在调用一个javascript函数。在这里,我使用JQuery Serialization获取所有HTML页面容器及其值。然后将此值传递给托管在服务器中的WCF服务。
此服务将此字符串解析为相应的对象,并将值保存到数据库中。
所以在HTMl页面中,我编写了如下的Javascript函数:
pmamml.ButtonClick = function() {
var formData = $("#form1").serializeArray();
var stringJson;
$.getJSON('ajax/test.json', function(formData) {
stringJson= JSON.stringify(formData)
});
//alert(stringJson);
$.ajax({
type: 'GET',
url: 'http://URL/Service.svc/Update?formData=' + JSON.stringify(formData),
error: pmamml.ajaxError,
success: function(msg) {
document.write(msg);
//alert(msg);
},
});},
在WCF服务中我写道:
[WebInvoke(Method = "GET", UriTemplate = "/Update?formData={formData}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
public string Update(string formData)
{
// Here i am receiving formdata string as
// formData = "[{\"name\":\"FirstName\",\"value\":\"Pankaj\"},{\"name\":\"MiddleName\",\"value\":\" \"},{\"name\":\"LastName\",\"value\":\"KUMAR\"}]";
}
我想将此字符串反序列化为List对象或keyvaluepair或Dictionary中的任何一种格式。
这样我就可以将这个值保存到数据库中。
我们怎么做到这一点。提前谢谢。
答案 0 :(得分:0)
最简单的方法是使用RegEx将其拆分为数组,匹配\“([^ \”] *)。
更新鉴于您要将其发送到Web服务,应将其配置为Json以自动反序列化
答案 1 :(得分:0)
下面的代码会将您的字符串数据分成可分割的部分,如下所示。
// new list
var l = new List<string>();
// original data
var s = "[{\"name\":\"FirstName\",\"value\":\"Raja\"},{\"name\":\"MiddleName\",\"value\":\"Raja \"},{\"name\":\"LastName\",\"value\":\"KUMAR\"}]";
// clean up and split in larger parts
var d = s.Substring(1, s.Length - 2).Replace("\\", "").Replace("\"", "").Replace("}", "").Split('{');
// Split in final entries and add to list
var sb = new char[2] { ',', ':' };
foreach (var r in d) { l.AddRange(r.Split(sb, StringSplitOptions.RemoveEmptyEntries));
//列表的内容将是
名称
姓
值
拉加
名称
中间名
值
Raja
名称
名字
值
KUMAR
//代码不是很健壮,例如你需要检查你的输入字符串是不是空
答案 2 :(得分:0)
是的,我得到了解决方案
这是我更新的JQuery
pmamml.ButtonClick = function() {
$.fn.serializeObject = function() {
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name] !== undefined) {
if (!o[this.name].push) {
o[this.name] = [o[this.name]];
}
o[this.name].push(this.value || '');
} else {
o[this.name] = this.value || '';
}
});
return o;
};
var stringJson = JSON.stringify($('#form1').serializeObject());
var Userdata = "formData=" + stringJson;
$.ajax({
type: 'GET',
url: 'http://URL/Service.svc/Update?' + Userdata,
error: pmamml.ajaxError,
success: function(response, status, xhr) {
if (response = true) {
//alert(response);
alert("Data Updated Successfully");
}
}
});
}
在上面的方法中,formData将传递JSON字符串,如下所示: {&#34; FirstName&#34;:&#34; Raja&#34;,&#34; MiddleName&#34;:&#34; Raja&#34;,&#34; LastName&#34;:&#34;库马尔&#34;}
在我的WCF服务中,将此JSON字符串转换为Object。
[WebInvoke(Method = "GET", UriTemplate = "/Update?formData={formData}", RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
public bool Update(string formData)
{
var mlParser = new MLParser();
System.Web.Script.Serialization.JavaScriptSerializer s = new System.Web.Script.Serialization.JavaScriptSerializer();
var InfoList = s.Deserialize<Users>(formData);
return mlParser.Update(InfoList);
}
public class Users
{
public string FirstName { get; set; }
public string MiddleName { get; set; }
public string LastName { get; set; }
}
这很好。
为了你的回应,请大家呐喊.. :)