如何总结使用 c# 和 Newtonsoft JSON 的值?

How to sum up values working with c# and Newtonsoft JSON?

我正在制作购物车。将餐点添加到购物车已完成,我还可以在购物车中显示带有价格的产品。我唯一没能做的就是将所有价格相加并写下该值。购物车可以有随机数量的产品。

这是我用于购物车的代码:

using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;

namespace menu
{
    public class Program
    {
        public static void Main(string[] args)
        {
            var myJsonString = new JsonShop("ShoppingCart.json");
            var myJsonObject = myJsonString.Load22();
            Console.Clear();
            Console.WriteLine("========================");
            Console.WriteLine("      Shopping cart");
            Console.WriteLine("========================\n");
            foreach (Shopping shop in myJsonObject.shoppinglist)
            {
                Console.WriteLine($"Meal: {shop.meal} Price: {shop.price}");
            }
            Console.WriteLine($"Total cost = ");
        }
        
        public class Shopping
        {
            public string meal;
            public double price;
                
            public Shopping(string Meal, double Price)
            {
                this.meal = Meal;
                this.price = Price;  
            }
        }

        public class Shoppinglist
        {
            public List<Shopping> shoppinglist = new List<Shopping>();
        }
    }
    
    public class JsonShop
    {
        public string Location;
        public JsonShop(string location)
        {
            this.Location = location;
        }

        public void Save22(Program.Shoppinglist ShoppingData)
        {
            string file = Newtonsoft.Json.JsonConvert.SerializeObject(ShoppingData, Newtonsoft.Json.Formatting.Indented);
            File.WriteAllText(Location, file);
        }

        public Program.Shoppinglist Load22()
        {
            Program.Shoppinglist ShoppingData = Newtonsoft.Json.JsonConvert.DeserializeObject<Program.Shoppinglist>(File.ReadAllText(Location));
            return ShoppingData;
        }
    }
}

这是我使用的 JSON 代码:

{
    "shoppinglist": [
    {
        "meal": "Tiramisu",
        "price": 6.5
    },
    {
        "meal": "Pasta carbonara",
        "price": 12.99
    }]
}

有人可以帮我把所有价格加起来吗?我认为下一步是使用 for 循环?

您可以通过两种方式在您的代码中执行此操作:

  1. 你可以像这样在当前循环中求和:

    public static void Main(string[] args)
    {
            var myJsonString = new JsonShop("ShoppingCart.json");
            var myJsonObject = myJsonString.Load22();
            Console.Clear();
            Console.WriteLine("========================");
            Console.WriteLine("      Shopping cart");
            Console.WriteLine("========================\n");
            double totalCost = 0;
            foreach (Shopping shop in myJsonObject.shoppinglist)
            {
                Console.WriteLine($"Meal: {shop.meal} Price: {shop.price}");
                totalCost += shop.price;
            }
            Console.WriteLine($"Total cost = ");
    }
    
    

2.you 可以用 linq 求和:

public static void Main(string[] args)
{
        var myJsonString = new JsonShop("ShoppingCart.json");
        var myJsonObject = myJsonString.Load22();
        Console.Clear();
        Console.WriteLine("========================");
        Console.WriteLine("      Shopping cart");
        Console.WriteLine("========================\n");
        foreach (Shopping shop in myJsonObject.shoppinglist)
        {
            Console.WriteLine($"Meal: {shop.meal} Price: {shop.price}");
        }
        Console.WriteLine($"Total cost = {myJsonObject.shoppinglist.Sum(x => x.price)}");
}