从Twitter ASP.NET C#解析Json数据-除非解析为类型对象,否则为空数据

从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 {

因此,我已经成功地解析了许多API的数据,但我似乎无法让(一些)twitter的API正常工作

我正在从端点“/1.1/statuses/user\u timeline.json”提取

我遇到问题的json数据如下(有关更多信息,请参阅):

我想提取hastagsuser_提到的,但是当我使用JavaScriptSerializer解析中的数据时,它们都显示为null

在我的模型中,我有以下内容:

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修饰符。

谢谢您的回答。你是个救生员。我会接受这个答案。