【问题标题】:How to sum up values working with c# and Newtonsoft JSON?如何总结使用 c# 和 Newtonsoft JSON 的值?
【发布时间】:2021-06-02 15:17:00
【问题描述】:

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

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

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 循环?

【问题讨论】:

  • 欢迎,循环听起来确实是朝着正确方向迈出的一步。你已经试过了吗?
  • @imsmn 尝试了一些东西,但我没有走得很远。例如,停止循环的值是多少?
  • 嗨,“下一步是使用 for 循环吗?”是的,但你已经有一个循环。在这个循环中进行计算。这样您就不必循环浏览所有产品两次

标签: c# json json.net


【解决方案1】:

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

  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.你可以用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)}");
}

【讨论】:

  • 啊啊,别告诉 op,op 明白了 ;)
猜你喜欢
  • 1970-01-01
  • 2016-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-21
  • 1970-01-01
相关资源
最近更新 更多