1

我使用了 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!我做错了什么?

4

2 回答 2

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
于 2013-05-23T01:11:29.417 回答
1

您尝试反序列化的 json 与您尝试将其反序列化的对象的定义不匹配。如果您的对象只有一个字段 -id类型为字符串,那么它将起作用。

为了使用通用方法进行反序列化,您需要为对象提供所有 json 属性都可以映射到的字段。由于您的对象上没有id字段,因此它失败了。如果您使用一般的反序列化方法,您会发现它创建了一个匿名对象,该对象具有名为id.

于 2013-05-23T01:15:48.527 回答