从Twitter ASP.NET C#解析Json数据-除非解析为类型对象,否则为空数据
因此,我已经成功地解析了许多API的数据,但我似乎无法让(一些)twitter的API正常工作 我正在从端点“/1.1/statuses/user\u timeline.json”提取 我遇到问题的json数据如下(有关更多信息,请参阅): 我想提取hastags和user_提到的,但是当我使用JavaScriptSerializer解析中的数据时,它们都显示为null 在我的模型中,我有以下内容:从Twitter ASP.NET C#解析Json数据-除非解析为类型对象,否则为空数据,c#,json,asp.net-mvc,C#,Json,Asp.net Mvc,因此,我已经成功地解析了许多API的数据,但我似乎无法让(一些)twitter的API正常工作 我正在从端点“/1.1/statuses/user\u timeline.json”提取 我遇到问题的json数据如下(有关更多信息,请参阅): 我想提取hastags和user_提到的,但是当我使用JavaScriptSerializer解析中的数据时,它们都显示为null 在我的模型中,我有以下内容: public partial class TwitterData_Entities {
public partial class TwitterData_Entities
{
List<TwitterData_HashTag> hashtags { get; set; }
List<TwitterData_UserMentions> user_mentions { get; set; }
}
public partial class TwitterData_HashTag
{
public string text { get; set; }
public List<int> indices { get; set; }
}
public partial class TwitterData_UserMentions
{
public string screen_name { get; set; }
public string name { get; set; }
public long id { get; set; }
public List<int> indices { get; set; }
}
public class TwitterData_Entities
{
public List<TwitterData_HashTag> hashtags { get; set; }
public List<TwitterData_UserMentions> user_mentions { get; set; }
}
public class TwitterData_HashTag
{
public string text { get; set; }
public List<int> indices { get; set; }
}
public class TwitterData_UserMentions
{
public string screen_name { get; set; }
public string name { get; set; }
public long id { get; set; }
public List<int> indices { get; set; }
}
public class TwitterData
{
public TwitterData_Entities entities { get; set; }
}
公共部分类TwitterData\u实体
{
列出hashtags{get;set;}
列表用户_提到{get;set;}
}
公共部分类TwitterData\u标签
{
公共字符串文本{get;set;}
公共列表索引{get;set;}
}
公共部分类TwitterData\u用户提及
{
公共字符串屏幕名称{get;set;}
公共字符串名称{get;set;}
公共长id{get;set;}
公共列表索引{get;set;}
}
我还尝试将下面的行添加到TwitterData_实体中的每个对象,但没有任何区别
[JsonProperty(PropertyName=“user\u提及”)]
唯一有效和普及的方法是使用:
public partial class TwitterData_Entities
{
List<object> hashtags { get; set; }
List<object> user_mentions { get; set; }
}
公共部分类TwitterData\u实体
{
列出hashtags{get;set;}
列表用户_提到{get;set;}
}
问题是我不想使用“object”类型,因为它不适合我的目的,而且它也会在我的数据结构中造成不一致
你们有什么建议来解决这个问题?我在网上找不到任何东西。我通过以下方式对其进行了反序列化:
var json = "{" +
" \"entities\": {" +
" \"hashtags\": [" +
" {" +
" \"text\": \"myHasTag\"," +
" \"indices\": [ 24, 53 ]" +
" }" +
" ]," +
" \"symbols\": [ ]," +
" \"user_mentions\": [" +
" {" +
" \"screen_name\": \"twitter\"," +
" \"name\": \"Twitter\"," +
" \"id\": 2353," +
" \"id_str\": \"2353\"," +
" \"indices\": [ 5, 14 ]" +
" }," +
" {" +
" \"screen_name\": \"TwitterDev\"," +
" \"name\": \"TwitterDev\"," +
" \"id\": 943434," +
" \"id_str\": \"943434\"," +
" \"indices\": [ 11, 32 ]" +
" }" +
" ]," +
" \"urls\": [ ]" +
" }" +
"}";
var javascriptSerializer = new JavaScriptSerializer();
var deserialized = javascriptSerializer.Deserialize<TwitterData>(json);
var json=“{”+
“\”实体\“:{”+
“\“hashtags\”:[”+
" {" +
“\”文本\“:\”myHasTag\“,”+
““索引”:[24,53]”+
" }" +
" ]," +
“\”符号\:[],”+
“\”用户\提到\“:[”+
" {" +
“\”屏幕名称\“:\”推特\“+
“\'name\':\'Twitter\',”+
“\“id\”:2353,”+
“\“id\U str\”:\“2353\”+
“\”索引\:[5,14]”+
" }," +
" {" +
“\“屏幕名称\”:\“TwitterDev\”,”+
“\'name\:\'TwitterDev\”,”+
“\'id\':943434,”+
“\“id\U str\”:\“943434\”+
“\”索引\:[11,32]”+
" }" +
" ]," +
“\“URL\:[]”+
" }" +
"}";
var javascriptSerializer=新的javascriptSerializer();
var deserialized=javascriptSerializer.Deserialize(json);
这只是您在{…}中嵌套提供的JSON,以使其成为有效的JSON和实际的反序列化
我的课程如下:
public partial class TwitterData_Entities
{
List<TwitterData_HashTag> hashtags { get; set; }
List<TwitterData_UserMentions> user_mentions { get; set; }
}
public partial class TwitterData_HashTag
{
public string text { get; set; }
public List<int> indices { get; set; }
}
public partial class TwitterData_UserMentions
{
public string screen_name { get; set; }
public string name { get; set; }
public long id { get; set; }
public List<int> indices { get; set; }
}
public class TwitterData_Entities
{
public List<TwitterData_HashTag> hashtags { get; set; }
public List<TwitterData_UserMentions> user_mentions { get; set; }
}
public class TwitterData_HashTag
{
public string text { get; set; }
public List<int> indices { get; set; }
}
public class TwitterData_UserMentions
{
public string screen_name { get; set; }
public string name { get; set; }
public long id { get; set; }
public List<int> indices { get; set; }
}
public class TwitterData
{
public TwitterData_Entities entities { get; set; }
}
公共类TwitterData\u实体
{
公共列表hashtags{get;set;}
公共列表用户_提到{get;set;}
}
公共类TwitterData\u标签
{
公共字符串文本{get;set;}
公共列表索引{get;set;}
}
公共类TwitterData\u用户提及
{
公共字符串屏幕名称{get;set;}
公共字符串名称{get;set;}
公共长id{get;set;}
公共列表索引{get;set;}
}
公共类twitter数据
{
公共TwitterData_实体{get;set;}
}
重要的是对TwitterData实体类的属性使用
public
access修饰符。谢谢您的回答。你是个救生员。我会接受这个答案。