JSON парсер найденых твитов из твитера - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет, с помощью сервиса твитера получаю информацию в JSON по запросу. Но что-то не могу получить уровень

geo

(возвращается null) в этом JSON'e и подразумеваю что не правильно описал уровень coordinates, подскажите где я мог ошибиться, ниже приведу описанную мной структуру JSON файла. Файл прилагаю в формате txt
  /*Описание структуры Json*/
    [JsonObject]
    public struct JsonUserObejct
    {
        [JsonProperty]
        public Statuses[] statuses { get; set; }
        public Search_metadata search_metadata { get; set; }
    }
 
    [JsonObject(MemberSerialization.OptIn)]
    public struct Statuses
    {
        [JsonProperty]
        public Metadata metadata { get; set; }
 
        [JsonProperty]
        //[JsonConverter(typeof(IsoDateTimeConverter))]
        public string created_at { get; set; }
 
        [JsonProperty]
        public decimal id { get; set; }
 
        [JsonProperty]
        public string id_str { get; set; }
 
        [JsonProperty]
        public string text { get; set; }
 
        [JsonProperty]
        public string source { get; set; }
 
        [JsonProperty]
        public bool truncated { get; set; }
 
        [JsonProperty]
        public decimal? in_reply_to_status_id { get; set; }
 
        [JsonProperty]
        public string in_reply_to_status_id_str { get; set; }
 
        //[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
        [JsonProperty]
        public decimal? in_reply_to_user_id { get; set; }
 
        [JsonProperty]
        public string in_reply_to_user_id_str { get; set; }
 
        [JsonProperty]
        public string in_reply_to_screen_name { get; set; }
 
        [JsonProperty]
        public User user { get; set; }
 
        [JsonProperty]
        public Geo? geo { get; set; }
 
        [JsonProperty]
        public Coordinates? coordinates { get; set; }
 
        [JsonProperty]
        public Place? place { get; set; }
 
        [JsonProperty]
        public string contributors { get; set; }
 
        [JsonProperty]
        public int retweet_count { get; set; }
 
        [JsonProperty]
        public int favorite_count { get; set; }
 
        [JsonProperty]
        public Entities entities { get; set; }
 
        [JsonProperty]
        public bool favorited { get; set; }
 
        [JsonProperty]
        public bool retweeted { get; set; }
 
        [JsonProperty]
        public string lang { get; set; }
    }
 
    [JsonObject(MemberSerialization.OptIn)]
    public struct Search_metadata
    {
        public double completed_in { get; set; }
        public decimal max_id { get; set; }
        public string max_id_str { get; set; }
        public string query { get; set; }
        public string refresh_url { get; set; }
        public int count { get; set; }
        public int since_id { get; set; }
        public string since_id_str { get; set; }
    }
 
    [JsonObject(MemberSerialization.OptIn)]
    public struct Metadata
    {
        [JsonProperty]
        public string iso_language_code {get; set;}
 
        [JsonProperty]
        public string result_type {get; set;}
    }
 
    [JsonObject(MemberSerialization.OptIn)]
    public struct User
    {
        [JsonProperty]
        public decimal id { get; set; }
 
        [JsonProperty]
        public string id_str { get; set; }
 
        [JsonProperty]
        public string name { get; set; }
 
        [JsonProperty]
        public string screen_name { get; set; }
 
        [JsonProperty]
        public string location { get; set; }
 
        [JsonProperty]
        public string profile_location { get; set; }
 
        [JsonProperty]
        public string description { get; set; }
 
        [JsonProperty]
        public string url { get; set; }
 
        [JsonProperty]
        public Entities entities { get; set; }
 
        [JsonProperty]
        public bool protect { get; set; }
 
        [JsonProperty]
        public int followers_count { get; set; }
 
        [JsonProperty]
        public int friends_count { get; set; }
 
        [JsonProperty]
        public int listed_count { get; set; }
 
        [JsonProperty]
        //[JsonConverter(typeof(IsoDateTimeConverter))]
        public string created_at { get; set; }
 
        [JsonProperty]
        public int favourites_count { get; set; }
 
        [JsonProperty]
        public int? utc_offset { get; set; }
 
        [JsonProperty]
        public string time_zone { get; set; }
 
        [JsonProperty]
        public bool geo_enabled { get; set; }
 
        [JsonProperty]
        public bool verified { get; set; }
 
        [JsonProperty]
        public string statuses_count { get; set; }
 
        [JsonProperty]
        public string lang { get; set; }
 
        [JsonProperty]
        public bool contributors_enabled { get; set; }
 
        [JsonProperty]
        public bool is_translator { get; set; }
 
        [JsonProperty]
        public bool is_translation_enabled { get; set; }
 
        [JsonProperty]
        public string profile_background_color { get; set; }
 
        [JsonProperty]
        public string profile_background_image_url { get; set; }
 
        [JsonProperty]
        public string profile_background_image_url_https { get; set; }
 
        [JsonProperty]
        public bool profile_background_tile { get; set; }
 
        [JsonProperty]
        public string profile_image_url { get; set; }
 
        [JsonProperty]
        public string profile_image_url_https { get; set; }
 
        [JsonProperty]
        public string profile_link_color { get; set; }
 
        [JsonProperty]
        public string profile_sidebar_border_color { get; set; }
 
        [JsonProperty]
        public string profile_sidebar_fill_color { get; set; }
 
        [JsonProperty]
        public string profile_text_color { get; set; }
 
        [JsonProperty]
        public bool profile_use_background_image { get; set; }
 
        [JsonProperty]
        public bool default_profile { get; set; }
 
        [JsonProperty]
        public bool default_profile_image { get; set; }
 
        [JsonProperty]
        public bool? following { get; set; }
 
        [JsonProperty]
        public bool? follow_request_sent { get; set; }
 
        [JsonProperty]
        public bool? notifications { get; set; }
    }
 
    [JsonObject(MemberSerialization.OptIn)]
    public struct Entities
    {
        public  Description description { get; set; }
    }
 
    [JsonObject(MemberSerialization.OptIn)]
    public struct Description
    {
        public string[] urls { get; set; }
    }
 
    [JsonObject(MemberSerialization.OptIn)]
    public struct Geo
    {
        public string type { get; set; }
        public Coord[] coordinates { get; set; }
    }
 
    [JsonObject(MemberSerialization.OptIn)]
    public struct Coord
    {
        public double[] coordinates;
    }
 
    [JsonObject(MemberSerialization.OptIn)]
    public struct Coordinates
    {
        public string type { get; set; }
        public Coord coordinates;
    }
 
    [JsonObject(MemberSerialization.OptIn)]
    public struct Place
    {
        public string id { get; set; }
        public string url { get; set; }
        public string place_type { get; set; }
        public string name { get; set; }
        public string full_name { get; set; }
        public string country_code { get; set; }
        public string country { get; set; }
        public string[] contained_within { get; set; }
        public Bounding_Box bounding_box { get; set; }
        //attributes
    }
 
    [JsonObject(MemberSerialization.OptIn)]
    public struct Bounding_Box
    {
        public string type { get; set; }
        public Coordinates[] coordinates { get; set; }
    }
 
    //[JsonObject(MemberSerialization.OptIn)]
    //public struct Entities
    //{
    //    public string[] hashtags { get; set; }
    //    public string[] symbols { get; set; }
    //    public string[] user_mentions { get; set; }
    //    public string[] urls { get; set; }
    //}
 
class Program
    {
        static void Main(string[] args)
        {
            string jsonFileName = @"C:\tweet.json";
            string jsonObj = File.ReadAllText(jsonFileName, Encoding.UTF8);
            JsonUserObejct jUserObject = JsonConvert.DeserializeObject<JsonUserObejct>(jsonObj);
            //Console.WriteLine(jUserObject.statuses[0].coordinates.coordinates[0].ToString());
            Console.WriteLine("-=:END:=-");
            Console.ReadKey(true);
}
}

Решение задачи: «JSON парсер найденых твитов из твитера»

textual
Листинг программы
 string jsonFileName = @"C:\tweet.json";
            string jsonObj = File.ReadAllText(jsonFileName, Encoding.UTF8);
 
            var obj = JObject.Parse(jsonObj);
 
            foreach (var tweet in obj["statuses"])
            {
                Console.WriteLine("Text: " + tweet["text"]);
                Console.WriteLine("User ID: " + tweet["user"]["id"]);
                Console.WriteLine("User: " + tweet["user"]["name"]);
                Console.WriteLine("Location: " + tweet["user"]["location"]);
                Console.WriteLine("Geo type: " + tweet["geo"]["type"]);
                Console.WriteLine("Geo coordinates: " + " Lat=" + tweet["geo"]["coordinates"][0] + " Lon=" + tweet["geo"]["coordinates"][1]);
                Console.WriteLine("Coordinates Type: " + tweet["coordinates"]["type"]);
                Console.WriteLine("Coordinates LatLon: " + " Lat=" + tweet["coordinates"]["coordinates"][0] + " Lon=" + tweet["coordinates"]["coordinates"][1]);
                Console.WriteLine("Place type: " + tweet["place"]["place_type"]);
                Console.WriteLine("Place Name: " + tweet["place"]["name"]);
                Console.WriteLine("Place FullName: " + tweet["place"]["full_name"]);
                Console.WriteLine("Bounding Box type: " + tweet["place"]["bounding_box"]["type"]);
 
                    foreach (var coord in tweet["place"]["bounding_box"]["coordinates"])
                    {
                        Console.WriteLine("coord: " + coord);
                    }
 
 
            }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

5   голосов , оценка 3.6 из 5