C# JSON.NET反序列化函数不返回值
我使用了JSON.NET反序列化对象函数,但没有得到任何值。它返回的所有内容都是空的!救命啊 下面是代码(实际上非常简单的代码!):C# JSON.NET反序列化函数不返回值,c#,json,json.net,C#,Json,Json.net,我使用了JSON.NET反序列化对象函数,但没有得到任何值。它返回的所有内容都是空的!救命啊 下面是代码(实际上非常简单的代码!): 公共类FMKey { 公共字符串键名{get;set;} 公共字符串键值{get;set;} } 公共部分类GetFMDetails:System.Web.UI.Page { 受保护的无效页面加载(对象发送方、事件参数e) { 字符串FMID=“{\'id\':\'22\'”; var FM=JsonConvert.DeserializeObject(FMID);
公共类FMKey
{
公共字符串键名{get;set;}
公共字符串键值{get;set;}
}
公共部分类GetFMDetails:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
字符串FMID=“{\'id\':\'22\'”;
var FM=JsonConvert.DeserializeObject(FMID);
Response.ContentType=“text/plain”;
响应。写入(“收到:+FM.keyName+”+FM.keyValue);
}
}
FM.keyName和FM.keyValue都包含NULL!我做错了什么?您的JSON需要与类的定义匹配。您将需要以下内容:
string FMID = "{\"keyName\":\"id\",\"keyValue\":\"22\"}";
var FM = JsonConvert.DeserializeObject<FMKey>(FMID);
您尝试反序列化的json与您尝试将其反序列化为的对象的定义不匹配。如果您的对象只有一个字符串类型的字段-
id
,那么它就可以工作了
为了使用泛型方法进行反序列化,您需要提供一个包含所有json属性都可以映射到的字段的对象。由于对象上没有
id
字段,因此失败。如果使用常规反序列化方法,您会发现它创建了一个匿名对象,其属性类型为string,名为id
您的JSON与类中的属性不匹配。您的JSON中有id
,但它与您的FMKey类属性不匹配。那么,它应该是什么呢?感谢string FMID=“{\“keyName\”:“id\”,“keyValue\”:“22\”代码>
string FMID = "{\"keyName\":\"id\",\"keyValue\":\"22\"}";
var FM = JsonConvert.DeserializeObject<FMKey>(FMID);
var test = new FMKey() {keyName = "id", keyValue = "22"};
var result = JsonConvert.SerializeObject(test); // This will spit out the correct JSON