C# 如何访问JSON字符串中的嵌套对象
我得到一个JSON格式的API响应,如下所示:C# 如何访问JSON字符串中的嵌套对象,c#,json,json.net,C#,Json,Json.net,我得到一个JSON格式的API响应,如下所示: { "token_type":"Bearer", "access_token":"12345678910", "user":{ "id":123456, "username":"jbloggs", "resource":2, "firstname":"joe" } } dynamic usrdetail = JsonConve
{
"token_type":"Bearer",
"access_token":"12345678910",
"user":{
"id":123456,
"username":"jbloggs",
"resource":2,
"firstname":"joe"
}
}
dynamic usrdetail = JsonConvert.DeserializeObject(JSONString);
我可以使用usrdetail访问令牌类型和访问令牌(usrdetail.access\u token),但如何获取用户信息
我已经尝试过usrdetail.user.id,但不起作用
谢谢
GJSON对象以键/值对的形式编写。因此,要访问JSON对象,可以使用方括号并将键放在其中
因此,对于您的示例,您可以执行
usrdetail[“user”][“id”]
,它应该检索用户的id。JSON对象是以键/值对编写的。因此,要访问JSON对象,可以使用方括号并将键放在其中
因此,对于您的示例,您可以执行usrdetail[“user”][“id”]
,它应该检索用户的id。1)从
2) 然后将json反序列化为上面的快速类型,如
class Program
{
static void Main(string[] args)
{
string json = @"{ 'token_type':'Bearer','access_token':'12345678910','user':{
'id':123456,'username':'jbloggs','resource':2,'firstname':'joe'}
}";
Token token = JsonConvert.DeserializeObject<Token>(json);
Console.WriteLine("token_type: " + token.token_type);
Console.WriteLine("access_token: " + token.access_token);
Console.WriteLine();
Console.WriteLine("id: " + token.user.id);
Console.WriteLine("username: " + token.user.username);
Console.WriteLine("resource: " + token.user.resource);
Console.WriteLine("firstname: " + token.user.firstname);
Console.ReadLine();
}
}
类程序
{
静态void Main(字符串[]参数)
{
字符串json=@“{'token_type':'Bearer','access_token':'12345678910','user':{
'id':123456,'username':'jbloggs','resource':2,'firstname':'joe'}
}";
Token Token=JsonConvert.DeserializeObject(json);
Console.WriteLine(“token\u type:+token.token\u type”);
Console.WriteLine(“访问令牌:+token.access\u令牌”);
Console.WriteLine();
Console.WriteLine(“id:+token.user.id”);
Console.WriteLine(“用户名:”+token.user.username);
Console.WriteLine(“资源:”+token.user.resource);
Console.WriteLine(“firstname:+token.user.firstname”);
Console.ReadLine();
}
}
输出:
1)从创建json字符串的快速类型
2) 然后将json反序列化为上面的快速类型,如
class Program
{
static void Main(string[] args)
{
string json = @"{ 'token_type':'Bearer','access_token':'12345678910','user':{
'id':123456,'username':'jbloggs','resource':2,'firstname':'joe'}
}";
Token token = JsonConvert.DeserializeObject<Token>(json);
Console.WriteLine("token_type: " + token.token_type);
Console.WriteLine("access_token: " + token.access_token);
Console.WriteLine();
Console.WriteLine("id: " + token.user.id);
Console.WriteLine("username: " + token.user.username);
Console.WriteLine("resource: " + token.user.resource);
Console.WriteLine("firstname: " + token.user.firstname);
Console.ReadLine();
}
}
类程序
{
静态void Main(字符串[]参数)
{
字符串json=@“{'token_type':'Bearer','access_token':'12345678910','user':{
'id':123456,'username':'jbloggs','resource':2,'firstname':'joe'}
}";
Token Token=JsonConvert.DeserializeObject(json);
Console.WriteLine(“token\u type:+token.token\u type”);
Console.WriteLine(“访问令牌:+token.access\u令牌”);
Console.WriteLine();
Console.WriteLine(“id:+token.user.id”);
Console.WriteLine(“用户名:”+token.user.username);
Console.WriteLine(“资源:”+token.user.resource);
Console.WriteLine(“firstname:+token.user.firstname”);
Console.ReadLine();
}
}
输出:
这应该行得通
var jsonStr = "{ \"token_type\":\"Bearer\",\"access_token\":\"12345678910\",\"user\":{\"id\":123456,\"username\":\"jbloggs\",\"resource\":2,\"firstname\":\"joe\"}}";
dynamic jsonObject = JsonConvert.DeserializeObject(jsonStr);
int userId = jsonObject.user.id;
Console.WriteLine(userId);
见此:这应该可以
var jsonStr = "{ \"token_type\":\"Bearer\",\"access_token\":\"12345678910\",\"user\":{\"id\":123456,\"username\":\"jbloggs\",\"resource\":2,\"firstname\":\"joe\"}}";
dynamic jsonObject = JsonConvert.DeserializeObject(jsonStr);
int userId = jsonObject.user.id;
Console.WriteLine(userId);
请参见:您可以序列化动态对象
动态usrdetail
,然后将其反序列化为预定义对象,如下所示:
dynamic usrdetail = JsonConvert.DeserializeObject(JSONString);
var jsonParam = JsonConvert.SerializeObject(usrdetail);
PredefiendClass obj = JsonConvert.DeserializeObject<PredefiendClass>(jsonParam);
dynamic usrdetail=JsonConvert.DeserializeObject(JSONString);
var jsonParam=JsonConvert.SerializeObject(usrdetail);
PredefindClass obj=JsonConvert.DeserializeObject(jsonParam);
您可以序列化动态对象动态usrdetail
,然后将其反序列化为预定义对象,如下所示:
dynamic usrdetail = JsonConvert.DeserializeObject(JSONString);
var jsonParam = JsonConvert.SerializeObject(usrdetail);
PredefiendClass obj = JsonConvert.DeserializeObject<PredefiendClass>(jsonParam);
dynamic usrdetail=JsonConvert.DeserializeObject(JSONString);
var jsonParam=JsonConvert.SerializeObject(usrdetail);
PredefindClass obj=JsonConvert.DeserializeObject(jsonParam);
这是一个很好的“快速和肮脏”的解决方案,但是考虑到一旦你用数据完成了你的目标,就可以像ErSuaib的答案那样进行重构,这是一个很好的“快速和肮脏”的解决方案,但是考虑到一旦你用数据完成了你的目标,就可以将重构看作是一个更可持续的东西,比如ErSuaib的答案。