我有一个简单的json格式字符串。
{"access_token": "12345678901234567890", "token_type": "bearer"}
这是在字符串响应fromerver
中我想从刺痛中提取两个值,我不想去设置课等的烦恼。
我尝试了这个
var BearerToken = new[] { new { acccess_token = "", token_type = "" } };
var myObjects = JsonConvert.DeserializeAnonymousType(ResponseFromServer, BearerToken);
但是它不起作用,对简单的东西有任何想法吗?
您遇到的问题是,这里
var BearerToken = new[] { new { acccess_token = "", token_type = "" } };
您将BearerToken
声明为匿名类型的数组,而在JSON,您有一个对象。此外,请注意拼写错误:在JSON中,您有access_token
在类型声明时您有acccess_token
。
为简单起见,您可以使用C#
的动态功能var str = "{"access_token": "12345678901234567890", "token_type": "bearer"}";
dynamic myObject = JsonConvert.DeserializeObject(str);
Console.WriteLine(myObject.access_token); //prints 12345678901234567890
Console.WriteLine(myObject.token_type); //prints bearer
使用匿名类型的工作示例(请注意,您的 BearerToken
声明错误,在JSON中有一个对象,而不是数组)如下:
var ResponseFromServer = "{"access_token": "12345678901234567890", "token_type": "bearer"}";
var BearerToken = new { access_token = "", token_type = "" };
var myObject = JsonConvert.DeserializeAnonymousType(ResponseFromServer, BearerToken);
Console.WriteLine(myObject.access_token); //prints 12345678901234567890
Console.WriteLine(myObject.token_type); //prints bearer
使用匿名类型解析的工作示例
使用动态绑定解析的工作示例
如果您确定需要一个对象数组,则需要将JSON包装到Square Brackets []
中。这表明您有一系列项目。然后,修复了拼写错误后,您可以在该数组中打印第一个项目的值:
Console.WriteLine(myObjects[0].access_token);
Console.WriteLine(myObjects[0].token_type);