我有一个JSON格式的简单字符串,就像这样返回。
{"access_token": "12345678901234567890", "token_type": "bearer"}
这是在字符串ResponseFromServer
中我想从刺痛中提取两个值,我不想去设置类等等。
我试过这个
var BearerToken = new[] { new { acccess_token = "", token_type = "" } };
var myObjects = JsonConvert.DeserializeAnonymousType(ResponseFromServer, BearerToken);
但它不起作用,任何简单的想法?
答案 0 :(得分:3)
你遇到的问题是这里
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
working example for parsing with anonymous type
working example for parsing with dynamic binding
如果您确定需要拥有一个对象数组,那么您需要将json包装成方括号[]
。这表明您有一系列项目。然后在修复拼写错误后,您可以打印该数组中第一个项目的值:
Console.WriteLine(myObjects[0].access_token);
Console.WriteLine(myObjects[0].token_type);