简体   繁体   中英

Can't access variables on a json class. C#

I recently tried using the twitch json api, i never had experience with json so it was a nice challenge but then i used json2csharp.com and converted a json string to a class like this:

class TwitchAPI
{
    public class Preview
    {
        public string small { get; set; }
        public string medium { get; set; }
        public string large { get; set; }
        public string template { get; set; }
    }

    public class Links
    {
        public string self { get; set; }
        public string follows { get; set; }
        public string commercial { get; set; }
        public string stream_key { get; set; }
        public string chat { get; set; }
        public string features { get; set; }
        public string subscriptions { get; set; }
        public string editors { get; set; }
        public string teams { get; set; }
        public string videos { get; set; }
    }

    public class Channel
    {
        public bool mature { get; set; }
        public string status { get; set; }
        public string broadcaster_language { get; set; }
        public string display_name { get; set; }
        public string game { get; set; }
        public string language { get; set; }
        public int _id { get; set; }
        public string name { get; set; }
        public string created_at { get; set; }
        public string updated_at { get; set; }
        public object delay { get; set; }
        public string logo { get; set; }
        public object banner { get; set; }
        public string video_banner { get; set; }
        public object background { get; set; }
        public string profile_banner { get; set; }
        public object profile_banner_background_color { get; set; }
        public bool partner { get; set; }
        public string url { get; set; }
        public int views { get; set; }
        public int followers { get; set; }
    }

    public class Stream
    {
        public long _id { get; set; }
        public string game { get; set; }
        public int viewers { get; set; }
        public string created_at { get; set; }
        public int video_height { get; set; }
        public int average_fps { get; set; }
        public int delay { get; set; }
        public bool is_playlist { get; set; }
    }
}

Now i try to access the viewers but it doesn't let me. I do it like this.

TwitchAPI twitchapi = new TwitchAPI();
string viewers = "" + twitchapi.Stream.viewers;

Stream is the name of a class within TwitchAPI - you haven't declared any fields within the TwitchAPI class at all, as far as we can see. So you could use:

TwitchAPI.Stream stream = new TwitchAPI.Stream();
string viewers = stream.viewers.ToString();

... but there's no stream associated with an instance of TwitchAPI at the moment.

(As an aside, I believe there are plenty of Twitter API clients available... if your aim is to do something with Twitter rather than to work on building your own Twitter API, I would suggest using an existing one.)

You need to create an instance if you want to access Stream .

If you want to access like the way you do, then create a property under TwitchApi class like this

public Stream Stream
{
    get;
    set;
}

Then you can access it as,

TwitchAPI twitchapi = new TwitchAPI();
string viewers = "" + twitchapi.Stream.viewers;

Also, you can avoid having nested classes unless there is something specific you are planning to achieve.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM