2016-01-13 2 views
1

Итак, я успешно проанализировал данные из многочисленных API, но я не могу получить (некоторые из) работающего твиттера.Parse Json данные из Twitter ASP.NET C# - нулевые данные, если они не разобраны в объект типа

Я оторвавшись от конечной точки «/1.1/statuses/user_timeline.json»

JSON данных У меня возникли проблемы с состоит в следующем (см https://dev.twitter.com/overview/api/entities для получения дополнительной информации):

"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":[] 
} 

Я хотел бы извлечь hastags и user_mentions, но оба они выглядят как null, когда я анализирую данные с помощью JavaScriptSerializer.

В моей модели я следующее:

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; } 
} 

Я также попытался добавить строку ниже для каждого объекта в TwitterData_Entities но это не имеет никакого значения

[JsonProperty (PropertyName = «user_mentions»)]

Единственное, что работает и заполняется, - это использовать:

public partial class TwitterData_Entities 
{ 
    List<object> hashtags { get; set; } 
    List<object> user_mentions { get; set; } 
} 

Проблема заключается в том, что я не хочу использовать тип «объект», как это не будет работать для моих целей, и это также создает несоответствие в моей структуре данных тоже.

Что вы предлагаете решить проблему? Я ничего не могу найти в Интернете.

ответ

1

мне удались десериализация это следующим образом:

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); 

Это только JSON вы при условии, что вложенные в {...}, чтобы сделать его действительный JSON и фактические десериализации.

Мои классы являются следующие:

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; } 
} 

Важно использовать модификатор public доступа к свойствам TwitterData_Entities класса.

+0

Благодарим вас за ответ. Ты спасатель жизни. Я буду принимать это как ответ. –

Смежные вопросы