简体   繁体   English

无法反序列化当前 JSON 数组 c#

[英]cannot deserialize the current JSON array c#

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:此 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
        }
    ]

My goal here is to deserialize the object and loop through it.我的目标是反序列化 object 并循环遍历它。

I assume that you:我假设你:

  • Try to deserialize JSON array;尝试反序列化 JSON 数组;
  • using dotnet 5 / using System.Text.Json;使用 dotnet 5 / 使用 System.Text.Json;

you can easily deserialize JSON array with您可以轻松地反序列化 JSON 阵列

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 output

3
0xb32979486938aa9694bfc898f35dbed459f44424:2:0xe75021660e00a7fa0df1b97da13ebabe6d82e7ea
0xb32979486938aa9694bfc898f35dbed459f44424:2:0x59a5493513ba2378ed57ae5ecfb8a027e9d80365
0xb32979486938aa9694bfc898f35dbed459f44424:2:0xb00c6641042ee7df4731e972b9ddf5a385d14ee0

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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