การดีซีเรียลไลซ์วัตถุ Json จำนวนมากในรายการ - C # [ซ้ำกัน]

ดังนั้นฉันจึงค้นหาทั่วทั้งเว็บ อ่านกระทู้นับไม่ถ้วน แต่ยังไม่พบคำตอบสำหรับปัญหาเล็กๆ น้อยๆ ที่ฉันมีนี้

ดังนั้นฉันจึงมีไฟล์ json ขนาดใหญ่นี้ซึ่งฉันต้องทำการดีซีเรียลไลซ์ลงในรายการออบเจ็กต์

จุดประสงค์คือเพื่อให้ผู้ใช้สามารถค้นหาชื่อรายการจากรายการ ซึ่งจะใช้รหัส # ของรายการนั้นเพื่อค้นหาส่วนอื่นของ API ที่ส่งคืนข้อมูลเกี่ยวกับรายการเดียวนั้น ฉันมีส่วนอื่นที่คิดออกแล้วและได้ผล แต่ส่วนนี้ดูเหมือนจะทำไม่ถูก

นี่คือตัวอย่างของ json:

{"2": {"name": "Cannonball", "buy_average": 173, "sell_average": 174, "overall_average": 174, "id": 2, "members": true, "sp": 5}, "6": {"name": "Cannon base", "buy_average": 173398, "sell_average": 177731, "overall_average": 186396, "id": 6, "members": true, "sp": 187500}, "12289": {"name": "Mithril platelegs (t)", "buy_average": 2473, "sell_average": 2473, "overall_average": 0, "id": 12289, "members": false, "sp": 2600}, "8": {"name": "Cannon stand", "buy_average": 184003, "sell_average": 184471, "overall_average": 185564, "id": 8, "members": true, "sp": 187500}, "10": {"name": "Cannon barrels", "buy_average": 183594, "sell_average": 185125, "overall_average": 188186, "id": 10, "members": true, "sp": 187500}, "12": {"name": "Cannon furnace", "buy_average": 175920, "sell_average": 178136, "overall_average": 187000, "id": 12, "members": true, "sp": 187500}, "4099": {"name": "Mystic hat (dark)", "buy_average": 11350, "sell_average": 11754, "overall_average": 11956, "id": 4099, "members": true, "sp": 15000}, "28": {"name": "Insect repellent", "buy_average": 450, "sell_average": 707, "overall_average": 750, "id": 28, "members": true, "sp": 3}, "30": {"name": "Bucket of wax", "buy_average": 0, "sell_average": 350, "overall_average": 350, "id": 30, "members": true, "sp": 6}, "4101": {"name": "Mystic robe top (dark)", "buy_average": 71235, "sell_average": 71800, "overall_average": 73595, "id": 4101, "members": true, "sp": 120000}, "36": {"name": "Candle", "buy_average": 173, "sell_average": 215, "overall_average": 217, "id": 36, "members": true, "sp": 3}, "39": {"name": "Bronze arrowtips", "buy_average": 7, "sell_average": 9, "overall_average": 10, "id": 39, "members": true, "sp": 1}, "40": {"name": "Iron arrowtips", "buy_average": 4, "sell_average": 4, "overall_average": 5, "id": 40, "members": true, "sp": 2}, "41": {"name": "Steel arrowtips", "buy_average": 25, "sell_average": 27, "overall_average": 30, "id": 41, "members": true, "sp": 6}.......

สำหรับไฟล์เต็ม: https://rsbuddy.com/exchange/summary.json

ตอนนี้ชั้นเรียนของฉันมีลักษณะเช่นนี้:

    public class ItemSummary
{
    public string name { get; set; }

    public int buy_average { get; set; }

    public int sell_average { get; set; }

    public int overall_average { get; set; }

    public int id { get; set; }

    public bool members { get; set; }

    public int sp { get; set; }


}

รหัสของฉันสำหรับการดีซีเรียลไลซ์:

     public string getitemsummaryraw()
    {
        apisource = "https://rsbuddy.com/exchange/summary.json";

        try
        {
            webreq = WebRequest.Create(apisource);
            webres = webreq.GetResponse();
            webstream = webres.GetResponseStream();

            using (sr = new StreamReader(webstream))
            {
                jsonstring = sr.ReadToEnd();
                return jsonstring;
            }
        }
        catch (WebException e)
        {
            Console.WriteLine(e);
            return null;
        }
    }


public List<ItemSummary> getitemsummary()
    {

        string rawjson = getitemsummaryraw();

        if (rawjson != null)
        {
            var itemlist = JsonConvert.DeserializeObject<Dictionary<string, List<ItemSummary>>>(rawjson);
            var items = itemlist.SelectMany(entry => entry.Value);
            return items.ToList<ItemSummary>();


        }
        else
        {
            return null;
        }
    }

ฉันได้รับข้อผิดพลาดต่อไปนี้:

Additional information: Cannot deserialize the current JSON object (e.g. {"name":"value"}) into type 'System.Collections.Generic.List`1[OSRS_Item_Logger.ItemSummary]' because the type requires a JSON array (e.g. [1,2,3]) to deserialize correctly.

ความช่วยเหลือใด ๆ ? ฉันกำลังดิ้นรนกับสิ่งนี้และสามารถช่วยเหลือได้ที่นี่จริงๆ

ฉันขอโทษ ฉันเขียนข้อความนี้ตอนตี 4 นี่ยังไม่ใช่การบ้านเลย นี่คือสิ่งที่ฉันกำลังทำในเวลาของฉันเอง ฉันเพิ่มโค้ดที่เหลือสำหรับการดีซีเรียลไลซ์ json


person Matthew Arnold    schedule 22.01.2018    source แหล่งที่มา
comment
โปรดลดค่านี้เป็นตัวอย่างที่สามารถทำซ้ำได้น้อยที่สุด ในขณะนี้ เรามีคลาสที่มีสมาชิกหลายคน มี JSON ก้อนใหญ่ และโค้ดที่ไม่สมบูรณ์กำลังทำการดีซีเรียลไลซ์ (ฉันขอแนะนำอย่างยิ่งให้คุณเริ่มปฏิบัติตามแบบแผนการตั้งชื่อ .NET)   -  person Jon Skeet    schedule 22.01.2018
comment
ฉันคิดว่าคุณควรดีซีเรียลไลซ์เป็น Dictionary<string, ItemSummary>   -  person mshsayem    schedule 22.01.2018
comment
คุณกำลังพยายามดีซีเรียลไลซ์ออบเจ็กต์ JSON ไปยังรายการ ซึ่งจะใช้งานไม่ได้ คุณต้องมีอาร์เรย์ JSON ในไฟล์ข้อความหรือทำให้เป็นอนุกรมเป็นออบเจ็กต์เดียวที่ไม่ใช่คอลเล็กชัน   -  person Jakub Jankowski    schedule 22.01.2018
comment
SO ไม่ใช่บริการเขียนการบ้าน   -  person pmcilreavy    schedule 22.01.2018
comment
ฉันไม่ได้ทำการบ้าน ฉันอัปเดตโพสต์ด้วยโค้ดที่เหลือ และขออภัยสำหรับข้อผิดพลาด เนื่องจากตอนที่ฉันโพสต์ข้อความนี้เป็นเวลาประมาณตี 4 และฉันก็พยักหน้าไป ยังไงก็ตามฉันควรจะแก้ไข json ให้เป็นอาร์เรย์ใช่ไหม? ดูเหมือนว่านั่นอาจเป็นทางเลือกที่ง่ายที่สุดของฉัน ณ จุดนี้   -  person Matthew Arnold    schedule 22.01.2018
comment
คำแนะนำโดย @mshsayem นั้นถูกต้อง   -  person Nkosi    schedule 22.01.2018
comment
ขอบคุณข้อเสนอแนะ ฉันกำลังพยายามใช้ API อื่นเพื่อทำให้กระบวนการนี้ง่ายขึ้นและต้องการวัตถุ c# ที่ซับซ้อนน้อยกว่าในการดีซีเรียลไลซ์ ฉันตั้งกระทู้เกี่ยวกับเรื่องนี้แล้ว แต่บางทีฉันควรจะแก้ไขกระทู้นี้ซะเลย ไม่แน่ใจ ขออภัยครับ ฉันรู้ว่าจะโพสต์ในฟอรั่มเหล่านี้ เป็นเบราว์เซอร์มานานแล้วแต่ไม่เคยโพสต์จริงๆจนกระทั่งนี้   -  person Matthew Arnold    schedule 22.01.2018