C# 反序列化格式为“的字符串”;属性=无论什么&;property2=无论什么";对一个物体

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

我正在接受一个HttpRequest,并将其读成字符串

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
很好。