0

What's wrong with my classes?. I see array of objects as response:

private void btSubmit_Click(object sender, EventArgs e)
{
    string myJsonResponse = "";
    string uri = "https://api-mainnet.rarible.com/items/0xb32979486938aa9694bfc898f35dbed459f44424%3A2/ownerships";
    
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create(uri);
    request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate;
    
    using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        using (Stream stream = response.GetResponseStream())
            using (StreamReader reader = new StreamReader(stream))
            {
                myJsonResponse = reader.ReadToEnd();
            }
    
    lista_root myDeserializedClass = JsonConvert.DeserializeObject<lista_root>(myJsonResponse);
    
    string ab = "1";
}
    
public class Root
{
    public string id { get; set; }
    public string token { get; set; }
    public string tokenId { get; set; }
    public string owner { get; set; }
    public int value { get; set; }
    public DateTime date { get; set; }
    public string status { get; set; }
    public int selling { get; set; }
    public int sold { get; set; }
    public int stock { get; set; }
    public List<object> pending { get; set; }
    public bool blacklisted { get; set; }
    public string creator { get; set; }
    public bool verified { get; set; }
    public List<object> categories { get; set; }
    public int likes { get; set; }
    public bool hide { get; set; }
    public int? price { get; set; }
    public int? priceEth { get; set; }
    public string buyToken { get; set; }
    public string buyTokenId { get; set; }
    public string signature { get; set; }
}
            
public class lista_root
{
    public List<Root> data { get; set; }
}

This json node contains something similar to this:

[
        {
            "id": "0xb32979486938aa9694bfc898f35dbed459f44424:2:0xe75021660e00a7fa0df1b97da13ebabe6d82e7ea",
            "token": "0xb32979486938aa9694bfc898f35dbed459f44424",
            "tokenId": "2",
            "owner": "0xe75021660e00a7fa0df1b97da13ebabe6d82e7ea",
            "value": 6,
            "date": "2021-03-17T19:40:01.000+00:00",
            "status": "NOT_FOR_SALE",
            "selling": 0,
            "sold": 0,
            "stock": 0,
            "pending": [],
            "blacklisted": false,
            "creator": "0x484ec62385e780f2460feac34864a77ba5a18134",
            "verified": true,
            "categories": [],
            "likes": 81,
            "hide": false
        },
        {
            "id": "0xb32979486938aa9694bfc898f35dbed459f44424:2:0x59a5493513ba2378ed57ae5ecfb8a027e9d80365",
            "token": "0xb32979486938aa9694bfc898f35dbed459f44424",
            "tokenId": "2",
            "owner": "0x59a5493513ba2378ed57ae5ecfb8a027e9d80365",
            "value": 4,
            "date": "2021-03-18T00:40:38.000+00:00",
            "status": "NOT_FOR_SALE",
            "selling": 0,
            "sold": 0,
            "stock": 0,
            "pending": [],
            "blacklisted": false,
            "creator": "0x484ec62385e780f2460feac34864a77ba5a18134",
            "verified": true,
            "categories": [],
            "likes": 81,
            "hide": false
        },
        {
            "id": "0xb32979486938aa9694bfc898f35dbed459f44424:2:0xb00c6641042ee7df4731e972b9ddf5a385d14ee0",
            "token": "0xb32979486938aa9694bfc898f35dbed459f44424",
            "tokenId": "2",
            "owner": "0xb00c6641042ee7df4731e972b9ddf5a385d14ee0",
            "value": 4,
            "date": "2021-03-17T17:31:39.000+00:00",
            "status": "NOT_FOR_SALE",
            "selling": 0,
            "sold": 0,
            "stock": 0,
            "pending": [],
            "blacklisted": false,
            "creator": "0x484ec62385e780f2460feac34864a77ba5a18134",
            "verified": true,
            "categories": [],
            "likes": 81,
            "hide": false
        }
    ]

My goal here is to deserialize the object and loop through it.

1 Answer 1

2

I assume that you:

  • Try to deserialize JSON array;
  • using dotnet 5 / using System.Text.Json;

you can easily deserialize JSON array with

List<Root> roots = JsonSerializer.Deserialize<List<Root>>(json);

full code

using System;
using System.Collections.Generic;
using System.Text.Json;

namespace JsonListDeserialize
{
    class Program
    {
        static void Main(string[] args)
        {
            String json = @"[{""id"":""0xb32979486938aa9694bfc898f35dbed459f44424:2:0xe75021660e00a7fa0df1b97da13ebabe6d82e7ea"",""token"":""0xb32979486938aa9694bfc898f35dbed459f44424"",""tokenId"":""2"",""owner"":""0xe75021660e00a7fa0df1b97da13ebabe6d82e7ea"",""value"":6,""date"":""2021-03-17T19:40:01.000+00:00"",""status"":""NOT_FOR_SALE"",""selling"":0,""sold"":0,""stock"":0,""pending"":[],""blacklisted"":false,""creator"":""0x484ec62385e780f2460feac34864a77ba5a18134"",""verified"":true,""categories"":[],""likes"":81,""hide"":false},{""id"":""0xb32979486938aa9694bfc898f35dbed459f44424:2:0x59a5493513ba2378ed57ae5ecfb8a027e9d80365"",""token"":""0xb32979486938aa9694bfc898f35dbed459f44424"",""tokenId"":""2"",""owner"":""0x59a5493513ba2378ed57ae5ecfb8a027e9d80365"",""value"":4,""date"":""2021-03-18T00:40:38.000+00:00"",""status"":""NOT_FOR_SALE"",""selling"":0,""sold"":0,""stock"":0,""pending"":[],""blacklisted"":false,""creator"":""0x484ec62385e780f2460feac34864a77ba5a18134"",""verified"":true,""categories"":[],""likes"":81,""hide"":false},{""id"":""0xb32979486938aa9694bfc898f35dbed459f44424:2:0xb00c6641042ee7df4731e972b9ddf5a385d14ee0"",""token"":""0xb32979486938aa9694bfc898f35dbed459f44424"",""tokenId"":""2"",""owner"":""0xb00c6641042ee7df4731e972b9ddf5a385d14ee0"",""value"":4,""date"":""2021-03-17T17:31:39.000+00:00"",""status"":""NOT_FOR_SALE"",""selling"":0,""sold"":0,""stock"":0,""pending"":[],""blacklisted"":false,""creator"":""0x484ec62385e780f2460feac34864a77ba5a18134"",""verified"":true,""categories"":[],""likes"":81,""hide"":false}]";
            List<Root> roots = JsonSerializer.Deserialize<List<Root>>(json);

            Console.WriteLine(roots.Count);
            foreach (var root in roots) Console.WriteLine(root.id);
        }
    }

    public class Root
    {
        public string id { get; set; }
        public string token { get; set; }
        public string tokenId { get; set; }
        public string owner { get; set; }
        public int value { get; set; }
        public DateTime date { get; set; }
        public string status { get; set; }
        public int selling { get; set; }
        public int sold { get; set; }
        public int stock { get; set; }
        public List<object> pending { get; set; }
        public bool blacklisted { get; set; }
        public string creator { get; set; }
        public bool verified { get; set; }
        public List<object> categories { get; set; }
        public int likes { get; set; }
        public bool hide { get; set; }
        public int? price { get; set; }
        public int? priceEth { get; set; }
        public string buyToken { get; set; }
        public string buyTokenId { get; set; }
        public string signature { get; set; }
    }
}

output

3
0xb32979486938aa9694bfc898f35dbed459f44424:2:0xe75021660e00a7fa0df1b97da13ebabe6d82e7ea
0xb32979486938aa9694bfc898f35dbed459f44424:2:0x59a5493513ba2378ed57ae5ecfb8a027e9d80365
0xb32979486938aa9694bfc898f35dbed459f44424:2:0xb00c6641042ee7df4731e972b9ddf5a385d14ee0
Sign up to request clarification or add additional context in comments.

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.