将 JSON 粘贴为 类 重复并将元素编号为唯一 类

Paste JSON as Classes Duplicates and Numbers Elements as Unique Classes

我有来自 Shopify 的 JSON 的以下部分:

{
    "orders": [
        {
            "total_line_items_price_set": {
                "shop_money": {
                    "amount": "281.96",
                    "currency_code": "USD"
                },
                "presentment_money": {
                    "amount": "281.96",
                    "currency_code": "USD"
                }
            },
            "total_discounts_set": {
                "shop_money": {
                    "amount": "0.00",
                    "currency_code": "USD"
                },
                "presentment_money": {
                    "amount": "0.00",
                    "currency_code": "USD"
                }
            },
        },

当我使用粘贴 JSON 为 类 功能时,我得到像 "shop_money" 和 "presentment_money" 这样的元素重复并编号为单独的 classes。

    public class Total_Line_Items_Price_Set
    {
        public Shop_Money shop_money { get; set; }
        public Presentment_Money presentment_money { get; set; }
    }

    public class Shop_Money
    {
        public string amount { get; set; }
        public string currency_code { get; set; }
    }

    public class Presentment_Money
    {
        public string amount { get; set; }
        public string currency_code { get; set; }
    }

    public class Total_Discounts_Set
    {
        public Shop_Money1 shop_money { get; set; }
        public Presentment_Money1 presentment_money { get; set; }
    }

    public class Shop_Money1
    {
        public string amount { get; set; }
        public string currency_code { get; set; }
    }

    public class Presentment_Money1
    {
        public string amount { get; set; }
        public string currency_code { get; set; }
    }

我不熟悉 JSON 以及它在 C# 中应该如何表示为 classes - 这似乎是错误的。有没有可能得到更好的结果?

解决方案:

根据 Zakk Diaz 的回答,我删除了每个重复和编号的 class。这样做之后,我成功地反序列化并使用了一个订单对象数组。


    public class Orders
    {
        public Order[] orders { get; set; }
    }

    public class Order
    {
        // [...]
    }

    class Program
    {
        static void Main(string[] args)
        {
            // [...]

            Orders testOrders = JsonConvert.DeserializeObject<Orders>(responseFromServer);
            Console.WriteLine(testOrders.orders[0].id);
            Console.WriteLine(testOrders.orders[0].total_line_items_price_set.shop_money.amount);
            Console.WriteLine(testOrders.orders[0].line_items[1].price_set.shop_money.amount);
        }
    }

大部分看起来没问题,您可以删除这些 类 并在 "Total_Discounts_Set"

中重命名它们
    public class Shop_Money1
{
    public string amount { get; set; }
    public string currency_code { get; set; }
}

public class Presentment_Money1
{
    public string amount { get; set; }
    public string currency_code { get; set; }
}