2

尝试使用 Newtonsoft.Json 从 str1=X&str2=Y 中取出一个对象

获取:“解析值时遇到意外字符:s。第 1 行,位置 1。”

我是否期望这会起作用?

public class MyTest 
{
    public string str1 { get; set; }
    public string str2 { get; set; }
}

public MyTest GetJson()
{
        data = "str1=X&str2=Y";
        JsonSerializerSettings jss = new JsonSerializerSettings();
        jss.MissingMemberHandling = MissingMemberHandling.Error;
        jss.ObjectCreationHandling = ObjectCreationHandling.Reuse;
        MyTest myTest = JsonConvert.DeserializeObject<MyTest>(data, jss);
}
4

2 回答 2

3

是的,你离题了。json 看起来更像这样:

{"str1":"x","str2":"y"}

有关更多信息,请参见 www.json.org。

编辑

要将查询字符串转换为 json:

var queryString = "str1=X&str2=Y";
var queryParams = HttpUtility.ParseQueryString(queryString);

var jsonObject = new JObject(from k in queryParams.AllKeys 
                             select new JProperty(k, queryParams[k]));

要将 json 字符串转换为对象:

MyTest test = JsonConvert.DeserializeObject<MyTest>(jsonObject.ToString());

要将对象转换为 json:

var test = JsonConvert.SerializeObject( new MyTest{str1 = "X", str2 = "Y"});
于 2010-07-16T21:15:46.933 回答
2

这是一个查询字符串,而不是 JSON 字符串。
您可以使用 解析它HttpUtility.ParseQueryString,它返回一个NameValueCollection.

于 2010-07-16T21:16:11.633 回答