我尝试使用JavaScriptSerializer的方法反序列化,但它不起作用。不确定我的代码与此example之间有什么不同。
public void Main()
{
var dataResponse =@"{\"access_token\": \"NAonCg8KBHBpYXMSABoAJRAluFUSFAD2I2fXOrgvxInfWWG0UUsoqsby\", \"expires_in\": 28800}"
JSON elements = new JavaScriptSerializer().Deserialize<JSON>(dataResponse);
foreach (var item in elements.data)
{
MessageBox.Show(item.access_token.ToString());
}
}
public class JSON
{
public List<JSONElements> data { get; set; }
}
public class JSONElements
{
public string access_token { get; set; }
public int expired_in { get; set; }
}
答案 0 :(得分:2)
首先:
您的json
字符串与JSONElements
类中的属性不匹配。int
成员名称不同。
第二
在使用JSON.Net
时使用json
。然后您将反序列化为错误的类型。您的json
字符串不包含任何属性data
。而是JSONElements
对象。
第三
如果您将@
符号与字符串一起使用,则无法转义字符
所以试试:
var dataResponse =@"{'access_token':'NAonCg8KBHBpYXMSABoAJRAluFUSFAD2I2fXOrgvxInfWWG0UUsoqsby','expires_in':28800}";
var data = JsonConvert.DeserializeObject<JSONElements>(dataResponse);
它有效。
答案 1 :(得分:0)
检查字符串编码。也许这样的事情会起作用
var dataResponse =@"{""access_token"": ""NAonCg8KBHBpYXMSABoAJRAluFUSFAD2I2fXOrgvxInfWWG0UUsoqsby"", ""expires_in"": ""28800""}";