You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:在C#中实现JSON与Customer列表的序列化及反序列化

问题分析与解决:Customer对象列表的JSON序列化及代码修正

你的代码存在基础语法错误,同时缺少JSON序列化的核心实现,下面一步步解决:

一、先修正代码的基础编译错误

你的代码无法正常运行,问题集中在这几点:

  • 变量名拼写不一致:声明的是customer,赋值时误用了cliente
  • 类型不匹配:number是int类型,但Console.ReadLine()返回字符串,直接赋值会触发编译错误
  • 代码位置错误:业务逻辑代码直接放在Program类下,没有放在C#程序的入口Main方法中

修正后的基础代码(可正常收集用户输入并添加到列表):

namespace customers_manager
{
    internal class Program
    {
        public class Customer
        { 
            public string name { get; set; }          
            public string email { get; set; }
            public int number { get; set; }
        }

        static void Main(string[] args)
        {
            List<Customer> Datac = new List<Customer>();

            Customer customer = new Customer();
            Console.WriteLine("New Customer data:");
            
            Console.Write("Name: ");
            customer.name = Console.ReadLine();
            
            Console.Write("Email: ");
            customer.email = Console.ReadLine();
            
            Console.Write("Number: ");
            // 处理字符串转int的逻辑,避免输入非数字导致崩溃
            if (int.TryParse(Console.ReadLine(), out int phoneNumber))
            {
                customer.number = phoneNumber;
            }
            else
            {
                Console.WriteLine("输入的手机号不是有效数字,将设为0");
                customer.number = 0;
            }

            Datac.Add(customer);
            Console.WriteLine("Finish, Press enter to leave");
            Console.ReadLine();
        }
    }
}

二、实现List转JSON字符串

现在要把Datac列表转换成JSON格式,常用两种方案:

方案1:使用.NET内置的System.Text.Json(无需额外安装)

直接引用命名空间后调用序列化方法即可:

// 先添加命名空间
using System.Text.Json;

// 在Main方法中,添加完customer到列表后执行序列化:
var serializeOptions = new JsonSerializerOptions { WriteIndented = true };
string jsonResult = JsonSerializer.Serialize(Datac, serializeOptions);
Console.WriteLine("\n转换后的JSON:");
Console.WriteLine(jsonResult);

WriteIndented = true会生成格式化后的JSON,更易读;如果不需要格式化,可省略该选项。

方案2:使用Newtonsoft.Json(第三方库,需NuGet安装)

先在NuGet包管理器中安装Newtonsoft.Json包,再使用以下代码:

// 添加命名空间
using Newtonsoft.Json;

// 序列化代码
string jsonResult = JsonConvert.SerializeObject(Datac, Formatting.Indented);
Console.WriteLine("\n转换后的JSON:");
Console.WriteLine(jsonResult);

三、额外提示

如果你的手机号可能包含国际区号、分隔符等非数字字符,建议把Customer类的number属性改成string类型,避免类型转换时的各种异常。

内容的提问来源于stack exchange,提问作者Benjamim Inacio

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 00:42:54