我使用了JSON.NET DeserializeObject函数,但我没有得到任何值。它返回的全部是NULL!救命啊!
这是代码(实际上非常简单的代码!):
public class FMKey
{
public string keyName { get; set; }
public string keyValue { get; set; }
}
public partial class GetFMDetails : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string FMID = "{\"id\":\"22\"}";
var FM = JsonConvert.DeserializeObject<FMKey>(FMID);
Response.ContentType = "text/plain";
Response.Write("Received: " + FM.keyName + " " + FM.keyValue);
}
}
FM.keyName和FM.keyValue都包含NULL!我做错了什么?
答案 0 :(得分:1)
您的JSON需要与您班级的定义相匹配。你会想要这样的东西:
string FMID = "{\"keyName\":\"id\",\"keyValue\":\"22\"}";
var FM = JsonConvert.DeserializeObject<FMKey>(FMID);
找出正确JSON的一种方法是构建一个对象,然后将其序列化。
var test = new FMKey() {keyName = "id", keyValue = "22"};
var result = JsonConvert.SerializeObject(test); // This will spit out the correct JSON
答案 1 :(得分:1)
您尝试反序列化的json与您尝试将其反序列化的对象的定义不匹配。如果你的对象只有一个字段 - id
类型字符串,那么它就可以工作。
为了使用泛型方法反序列化,您需要为对象提供所有json属性可以映射到的字段。由于您的对象上没有id
字段,因此失败。如果使用通用的反序列化方法,您会发现它创建了一个匿名对象,其属性类型为id
。