C# 反序列化格式为“的字符串”;属性=无论什么&;property2=无论什么";对一个物体
我正在接受一个HttpRequest,并将其读成字符串C# 反序列化格式为“的字符串”;属性=无论什么&;property2=无论什么";对一个物体,c#,.net,json,C#,.net,Json,我正在接受一个HttpRequest,并将其读成字符串 var body = request.Content.ReadAsStringAsync().Result; 这个主体为我提供了一个字符串,如下所示: "To=Jim&From=Dan+Bailey" 我想序列化body以自动绑定到如下对象 public class Letter { [JsonProperty("To")] public string To { get; set; } [JsonPro
var body = request.Content.ReadAsStringAsync().Result;
这个主体为我提供了一个字符串,如下所示:
"To=Jim&From=Dan+Bailey"
我想序列化body以自动绑定到如下对象
public class Letter
{
[JsonProperty("To")]
public string To { get; set; }
[JsonProperty("From")]
public string From { get; set; }
}
有什么想法吗?我尝试使用JsonSerializer和Newtonsoft.Json.Convert,但两者都需要不同的格式您拥有的不是Json,很可能是一个简单的html参数字符串。根据您的类
字母的外观,格式似乎是固定的
我想你可以用正则表达式来做:
var match = Regex.Match("To=Jim&From=Dan+Bailey", "To=(?<To>[^&]+)&From=(?<From>[^&]+)");
var letter = new Letter() { To = match.Groups["To"].Value, From = match.Groups["From"].Value };
var match=Regex.match(“To=Jim&From=Dan+Bailey”,“To=(?[^&]+)&From=(?[^&]+)”;
var letter=new letter(){To=match.Groups[“To”].Value,From=match.Groups[“From”].Value};
您拥有的不是JSON,很可能是一个简单的html参数字符串。根据您的类字母的外观,格式似乎是固定的
我想你可以用正则表达式来做:
var match = Regex.Match("To=Jim&From=Dan+Bailey", "To=(?<To>[^&]+)&From=(?<From>[^&]+)");
var letter = new Letter() { To = match.Groups["To"].Value, From = match.Groups["From"].Value };
var match=Regex.match(“To=Jim&From=Dan+Bailey”,“To=(?[^&]+)&From=(?[^&]+)”;
var letter=new letter(){To=match.Groups[“To”].Value,From=match.Groups[“From”].Value};
Json反序列化程序只能在Json字符串上工作
您可以直接使用该实用程序将querystring转换为NameValueCollection
在大多数情况下,使用NameValueCollection就足够了,但是如果您仍然需要强类型对象,我建议您使用反射,或者首先序列化为json字符串,然后使用Newtonsoft反序列化器
var dict = new Dictionary<string, string>();
foreach (var key in parameters.Keys)
{
dict.Add(key, parameters[key]);
}
var json = JsonConvert.SerializeObject(dict);
var obj = JsonConvert.DeserializeObject<Letter>(json);
var dict=newdictionary();
foreach(参数中的var键。键)
{
dict.Add(键,参数[key]);
}
var json=JsonConvert.SerializeObject(dict);
var obj=JsonConvert.DeserializeObject(json);
Json反序列化程序只能在Json字符串上工作
您可以直接使用该实用程序将querystring转换为NameValueCollection
在大多数情况下,使用NameValueCollection就足够了,但是如果您仍然需要强类型对象,我建议您使用反射,或者首先序列化为json字符串,然后使用Newtonsoft反序列化器
var dict = new Dictionary<string, string>();
foreach (var key in parameters.Keys)
{
dict.Add(key, parameters[key]);
}
var json = JsonConvert.SerializeObject(dict);
var obj = JsonConvert.DeserializeObject<Letter>(json);
var dict=newdictionary();
foreach(参数中的var键。键)
{
dict.Add(键,参数[key]);
}
var json=JsonConvert.SerializeObject(dict);
var obj=JsonConvert.DeserializeObject(json);
另外,我想我应该加上。。。我把我的信件课简化了。它有两个以上的属性。你可以为我提供更多的上下文来扩展正则表达式,或者你可以自己做。@Prateek提到的ParseQueryString
如果您不想手工制作正则表达式,那么它是很好的。另外,我想我应该添加。。。我把我的信件课简化了。它有两个以上的属性。你可以为我提供更多的上下文来扩展正则表达式,或者你可以自己做。如果您不想手工编写正则表达式,@Prateek提到的ParseQueryString
很好。