weixin_43186810 2024-11-29 22:01 采纳率: 30%
浏览 18
已结题

关于#c##的问题:以上代码怎么写才能序列化json得到以下格式

C# 序列化json


                                    string jsonstr2 = "";
                                    ErpPurchase_order modelg = null;
                                    modelg = new ErpPurchase_order();
                                    List<ErpPurchase> PurchasesLists = new List<ErpPurchase>();
                                    List<Erporder> BulkDatass = new List<Erporder>();
                                    Erporder kk = null;
                                    kk = new Erporder();
                                    kk.IO_DATE = DateTime.Now.ToString("yyyy/MM/dd");//日期
                                    kk.UPLOAD_SER_NO = "1";//序号
                                    kk.CUST = codeModel.customer;//客户编号
                                    kk.CUST_DES = codeModel.SUPPLIER;//供应商编号
                                    BulkDatass.Add(kk);
                                    modelg.PurchasesList = PurchasesLists ;
                                    jsonstr2 = Utils.HttpJsonPost(ERPRequestUrl + "/Purchases/SavePurchases", JsonConvert.SerializeObject(modelg));
                                    ERPresult = JsonConvert.DeserializeObject<ErpIntelligentResultEntity>(jsonstr2);

以上代码怎么写才能序列化json得到以下格式


{
     "PurchasesList": [{
      "BulkDatas": {
       "IO_DATE": "20241129",
       "UPLOAD_SER_NO": "1",
       "CUST": "00001",
       "CUST_DES": "00001",
      }
     }]
}

    public class ErpPurchase_order
    {
        public ErpPurchase_order() { }
        public List<ErpPurchase> PurchasesList { get; set; }
    }

    public class ErpPurchase
    {
        public ErpPurchase() { }
        public List<Erporder> BulkDatas { get; set; }

    }

    public class Erporder
    {

        public string IO_DATE { get; set; }

        public string UPLOAD_SER_NO { get; set; }

        public string CUST { get; set; }

        public string CUST_DES { get; set; }
}
  • 写回答

16条回答 默认 最新

  • 专家-皆知 2024-11-29 22:02
    关注

    参考免费微信小程序:皆我百晓生 作答,经由专家-皆知整理回复,如问题解决,望采纳;如仍有疑问,请评论回复。

    要达到您想要的JSON格式,您需要调整一下C#类结构和赋值方式。根据您的目标JSON,ErpPurchase类应该直接包含一个Erporder对象而不是一个List<Erporder>,因为目标JSON只显示了一个嵌套的对象,而不是对象列表。下面是调整后的类结构和示例代码:

    public class ErpPurchase_order
    {
        public List<ErpPurchase> PurchasesList { get; set; }
    }
    
    public class ErpPurchase
    {
        public Erporder BulkDatas { get; set; }
    }
    
    public class Erporder
    {
        public string IO_DATE { get; set; }
        public string UPLOAD_SER_NO { get; set; }
        public string CUST { get; set; }
        public string CUST_DES { get; set; }
    }
    
    // 使用修改后的结构创建对象并序列化
    public void SerializeToSpecificJson()
    {
        var modelg = new ErpPurchase_order();
        var purchasesList = new List<ErpPurchase>();
    
        var erpOrder = new Erporder
        {
            IO_DATE = DateTime.Now.ToString("yyyyMMdd"),
            UPLOAD_SER_NO = "1",
            CUST = "00001",
            CUST_DES = "00001"
        };
    
        var erpPurchase = new ErpPurchase
        {
            BulkDatas = erpOrder
        };
    
        purchasesList.Add(erpPurchase);
        modelg.PurchasesList = purchasesList;
    
        string jsonstr2 = JsonConvert.SerializeObject(modelg, Formatting.Indented);
        Console.WriteLine(jsonstr2);
    
        // 如果有后续的HttpJsonPost调用,这里可以继续使用jsonstr2
    }
    

    这段代码首先定义了正确的类结构以匹配目标JSON格式。然后,在SerializeToSpecificJson方法中,我们创建了一个ErpPurchase_order对象,并给其PurchasesList属性添加了一个ErpPurchase对象,该对象包含一个直接的Erporder数据。最后,我们使用JsonConvert.SerializeObject将对象序列化为JSON字符串,并打印出来。如果您需要将这个JSON字符串发送到服务器,您可以将jsonstr2传递给您的Utils.HttpJsonPost方法。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(15条)

报告相同问题?

问题事件

  • 系统已结题 12月7日
  • 已采纳回答 11月29日
  • 创建了问题 11月29日