0

I'm working with the following json:

[
  {
    "file": {
      "type": "external",
      "size": 0,
      "sizeUnit": "",
      "url": "resources/asyncworldedit.327/download?version=381454",
      "externalUrl": "https://github.com/SBPrime/AsyncWorldEdit/releases/tag/v3.8.2"
    },
    "likes": 64,
    "testedVersions": [
      "1.7",
      "1.8",
      "1.9",
      "1.10",
      "1.11",
      "1.12",
      "1.13",
      "1.14",
      "1.15",
      "1.16"
    ],
    "links": {
      "b2xkIHZlcnNpb24gMy41LjQgYW5kIFdFIDYuMS43LjM=": "https://www.spigotmc.org/resources/asyncworldedit-premium.9661/history",
      "aGVyZQ==": "http://www.spigotmc.org/threads/asyncworldedit-what-performance-you-may-expect.56947/",
      "V29ybGRFZGl0IEZvcmdl": "http://minecraft.curseforge.com/mc-mods/225608-worldedit",
      "QW1hemluZ1RlcnJhaW5HZW5lcmF0b3I=": "https://www.spigotmc.org/resources/amazingterraingenerator-generate-custom-terrain-like-a-terraformer.26844/",
      "Qm91bnRpZnVsQVBJ": "http://www.spigotmc.org/resources/bountifulapi.1394/",
      "R2l0aHVi": "https://github.com/SBPrime/AsyncWorldEdit-API",
      "cHJlbWl1bQ==": "https://www.spigotmc.org/resources/asyncworldedit-premium.9661/",
      "discussion": "threads/asyncworldedit.11441/",
      "V29ybGRFZGl0": "http://dev.bukkit.org/server-mods/worldedit/",
      "QWN0aW9uTWVzc2FnZXI=": "http://www.spigotmc.org/resources/actionmessager.4592/",
      "QmFyQVBJ": "http://dev.bukkit.org/bukkit-plugins/bar-api/",
      "UGx1Z2luIEFQSQ==": "https://github.com/SBPrime/AsyncWorldEdit-Premium/wiki/API",
      "QWN0aW9uQmFyQVBJ": "http://www.spigotmc.org/resources/actionbarapi.1315/",
      "c3BpZ290bWMub3Jn": "http://www.spigotmc.org/threads/asyncworldedit-what-performance-you-may-expect.56947/",
      "UGxvdE1l": "http://dev.bukkit.org/bukkit-plugins/plotme/",
      "UHJlbWl1bSBkb3dubG9hZCBwYWdl": "https://www.spigotmc.org/resources/asyncworldedit-premium.9661/",
      "additionalInformation": "https://github.com/SBPrime/AsyncWorldEdit/wiki",
      "R2l0SHVi": "https://github.com/SBPrime/AsyncWorldEdit/wiki",
      "QXN5bmNXb3JsZEVkaXQgLSBCb3NzIEJhcg==": "https://www.spigotmc.org/resources/asyncworldedit-boss-bar.76600/",
      "Um9hZG1hcA==": "https://github.com/SBPrime/AsyncWorldEdit-Premium/wiki/Roadmap",
      "alternativeSupport": "https://github.com/SBPrime/AsyncWorldEdit/issues",
      "UGVybWlzc2lvbnMgcGFnZQ==": "https://github.com/SBPrime/AsyncWorldEdit/wiki/Permissions",
      "R2l0aHViIGZvcms=": "https://github.com/Aurelien30000/ActionBarAPI",
      "V29ybGRFZGl0IDcuMS4w": "https://dev.bukkit.org/projects/worldedit?gameCategorySlug=bukkit-plugins&projectID=31043",
      "VGl0bGVNYW5hZ2Vy": "http://www.spigotmc.org/resources/titlemanager.1049/",
      "bGluaw==": "https://github.com/SBPrime/AsyncWorldEdit/wiki/License",
      "Q29tbWFuZHMgcGFnZQ==": "https://github.com/SBPrime/AsyncWorldEdit/wiki/Commands",
      "V2VsY29tZVRpdGxl": "http://www.spigotmc.org/resources/spigot-1-8-welcometitle.1063/",
      "V29ybGRFZGl0IDYuMS4yIChjaGVjayByZWxlYXNlIG5vdGVzIGZvciBleGFjdCB2ZXJzaW9uKQ==": "https://dev.bukkit.org/projects/worldedit?gameCategorySlug=bukkit-plugins&projectID=31043",
      "Q29uZmlndXJhdGlvbiBwYWdl": "https://github.com/SBPrime/AsyncWorldEdit/wiki/Configuration",
      "QXN5bmNXb3JsZEVkaXQgUHJlbWl1bQ==": "https://www.spigotmc.org/resources/asyncworldedit-premium.9661/",
      "QmxvY2tzSHVi": "https://github.com/SBPrime/BlocksHub/wiki",
      "UmVhZA==": "https://github.com/SBPrime/AsyncWorldEdit/wiki/Lag/"
    },
    "name": "AsyncWorldEdit",
    "tag": "Async WorldEdit - Edit millions of blocks without lag!",
    "version": {
      "id": 381454,
      "uuid": "00000eb3-0a2d-acde-0000-947ebad08eb5"
    },
    "author": {
      "id": 1621
    },
    "category": {
      "id": 15
    },
    "rating": {
      "count": 201,
      "average": 4.25131
    },
    "icon": {
      "url": "data/resource_icons/0/327.jpg?1391290736",
      "data": "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",
      "info": "",
      "hash": ""
    },
    "releaseDate": 1391290680,
    "updateDate": 1612373951,
    "downloads": 261825,
    "premium": false,
    "sourceCodeLink": "https://github.com/SBPrime/AsyncWorldEdit/",
    "donationLink": "https://www.spigotmc.org/resources/asyncworldedit-premium.9661/",
    "existenceStatus": 1,
    "id": 327
  }
]

This is from Spiget API, and here is the link to exactly what the API query is: "https://api.spiget.org/v2/search/resources/worldedit" I manually wrote out this whole class structure:

    public class file
    {
        public string type { get; set; } 
        public int size { get; set; }
        public string sizeUnit { get; set; }
        public string url { get; set; }
        public string? externalUrl { get; set; }
    }

    public class version
    {
        public int id { get; set; }
        public string uuid { get; set; }
    }

    public class author
    {
        public int id { get; set; }
    }

    public class category
    {
        public int id { get; set; }
    }
    
    public class rating
    {
        public int count { get; set; }
        public double average { get; set; }
    }

    public class icon
    {
        public string url { get; set; }
        public string data { get; set; }
        public string info { get; set; }
        public string hash { get; set; }
    }

    public class Root
    {
        public file file { get; set; }
        public int likes { get; set; }
        public List<string> testedVersions { get; set; }
        public List<string> links { get; set; }
        public string name { get; set; }
        public string tag { get; set; }
        public version version { get; set; }
        public author author { get; set; }
        public category category { get; set; }
        public rating rating { get; set; }
        public icon icon { get; set; }
        public int releaseDate { get; set; }
        public int updateDate { get; set; }
        public int downloads { get; set; }
        public bool premium { get; set; }
        public string sourceCodeLink { get; set; }
        public string donationLink { get; set; }
        public int existenceStatus { get; set; }
        public int id { get; set; }
    }

Key information: externalUrl is sometimes there and sometimes not, something I also have to deal with. And then to finish things off, I used the following code:

WebClient wc = new WebClient();
dynamic JSONData = JsonConvert.DeserializeObject<Root>(wc.DownloadString("https://api.spiget.org/v2/search/resources/worldedit?field=name&size=1"));
Console.WriteLine(JSONData.testedVersions);

Basically I'm working with Spiget and I'm trying to deserialize the json data that the API gives to me. However, I keep getting the same error. I've tried using autogenerated class structures, borrowed code, etc, and nothing is working. I even resorted to writing out the class structure I referenced earlier which took forever, and it still didn't work.

4
  • Double check your types. file.size should be an int but you made it a string in your class. Commented Apr 8, 2021 at 5:45
  • @Turksarama Thanks I appreciate it! I just went through, and I'll update the code shortly, but that isn't the issue. The error is still appearing Commented Apr 8, 2021 at 5:48
  • 2
    links is a dictionary in the JSON but a List<string> in your class. Commented Apr 8, 2021 at 5:58
  • 3
    You're deserializing a single Root, but the json is a collection of Root; try JsonConvert.DeserializeObject<IReadOnlyCollection<Root>> instead. Commented Apr 8, 2021 at 6:17

2 Answers 2

1

The two problems with your code were:

  1. You were using List for links instead of using Dictionary<string, string>
  2. Also response from API was in Array form and you were trying to convert it to single object instead of converting it into List or ObservableCollection.

I made some changes in your code. Here's code:

public class File
    {
        public string type { get; set; }
        public int size { get; set; }
        public string sizeUnit { get; set; }
        public string url { get; set; }
        public string externalUrl { get; set; }
    }

    public class Version
    {
        public int id { get; set; }
        public string uuid { get; set; }
    }

    public class Author
    {
        public int id { get; set; }
    }

    public class Category
    {
        public int id { get; set; }
    }

    public class Rating
    {
        public int count { get; set; }
        public double average { get; set; }
    }

    public class Icon
    {
        public string url { get; set; }
        public string data { get; set; }
        public string info { get; set; }
        public string hash { get; set; }
    }

    public class Root
    {
        public File file { get; set; }
        public int likes { get; set; }
        public List<string> testedVersions { get; set; }
        public Dictionary<string, string> links { get; set; }
        public string name { get; set; }
        public string tag { get; set; }
        public Version version { get; set; }
        public Author author { get; set; }
        public Category category { get; set; }
        public Rating rating { get; set; }
        public Icon icon { get; set; }
        public int releaseDate { get; set; }
        public int updateDate { get; set; }
        public int downloads { get; set; }
        public bool premium { get; set; }
        public string sourceCodeLink { get; set; }
        public string donationLink { get; set; }
        public int existenceStatus { get; set; }
        public int id { get; set; }
    }

////////////////////

private async void SaveAsJson()
    {
        string url = "https://api.spiget.org/v2/search/resources/worldedit?field=name&size=1";
        using (HttpClient client = new HttpClient())
        {
            var response = await client.GetAsync(url);
            string stringResponse = await response.Content.ReadAsStringAsync();
            MessageBox.Show(stringResponse);
            ObservableCollection<Root> myObj = JsonConvert.DeserializeObject<ObservableCollection<Root>>(stringResponse);
            // Do what u want to do
            MessageBox.Show(myObj.First().likes.ToString());
        }
    }

    private void Button_Click(object sender, RoutedEventArgs e)
    {
        SaveAsJson();
    }
Sign up to request clarification or add additional context in comments.

Comments

0

The answer is as follows. The classes need to be defined as such:

public class File
    {
        public string type { get; set; }
        public int size { get; set; }
        public string sizeUnit { get; set; }
        public string url { get; set; }
        public string externalUrl { get; set; }
    }

    public class Version
    {
        public int id { get; set; }
        public string uuid { get; set; }
    }

    public class Author
    {
        public int id { get; set; }
    }

    public class Category
    {
        public int id { get; set; }
    }

    public class Rating
    {
        public int count { get; set; }
        public double average { get; set; }
    }

    public class Icon
    {
        public string url { get; set; }
        public string data { get; set; }
        public string info { get; set; }
        public string hash { get; set; }
    }

    public class Root
    {
        public File file { get; set; }
        public int likes { get; set; }
        public List<string> testedVersions { get; set; }
        public Dictionary<string, string> links { get; set; }
        public string name { get; set; }
        public string tag { get; set; }
        public Version version { get; set; }
        public Author author { get; set; }
        public Category category { get; set; }
        public Rating rating { get; set; }
        public Icon icon { get; set; }
        public int releaseDate { get; set; }
        public int updateDate { get; set; }
        public int downloads { get; set; }
        public bool premium { get; set; }
        public string sourceCodeLink { get; set; }
        public string donationLink { get; set; }
        public int existenceStatus { get; set; }
        public int id { get; set; }
    }

And the function that uses the API needs to be written like this:

public static void SaveAsJson()
{
    string url = "https://api.spiget.org/v2/search/resources/worldedit?field=name&size=1";
    using (WebClient wc = new WebClient())
    {
        ObservableCollection<Root> myObj = JsonConvert.DeserializeObject<ObservableCollection<Root>>(wc.DownloadString("https://api.spiget.org/v2/search/resources/worldedit?field=name&size=1"));
        Console.WriteLine(myObj.First().name.ToString());
    }
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.