如何在 C# 中按 ID 对 JSON 数据进行分组

     2023-03-31     126

关键词:

【中文标题】如何在 C# 中按 ID 对 JSON 数据进行分组【英文标题】:How to group JSON data by ID in C# 【发布时间】:2021-11-17 08:40:51 【问题描述】:

将数据表中的数据序列化后获取这种格式的JSON

这是读取excel文件并将数据存储在数据表中后的结果。后来使用 newtosoft.json 序列化成下面的 JSON 输出

JSON 现在低于:

[ "Id": "1", "Profit": "33.332999999999998", "Telephone": "123", "Email": "user1@testmail.com" ,  "Id": "1", "Profit": "21.21", "Telephone": "43", "Email": "user11@testmail.com" ,  "Id": "2", "Profit": "49.000999999999998", "Telephone": "22", "Email": "user2@testmail.com" ,  "Id": "2", "Profit": "10.1", "Telephone": "876", "Email": "user22@testmail.com" ]

预期格式

[ "Id": "1", "Profits": ["33.332999999999998", "21.21"], "Telephones": ["43", "123"], "Emails": ["user1@testmail.com", "user11@testmail.com"] ,  "Id": "2", "Profits": ["49.000999999999998", "10.1"], "Telephones": ["876", "22"], "Emails": ["user2@testmail.com", "user22@testmail.com"] ]

有人可以帮忙吗?

【问题讨论】:

这个问题更多地与您如何读取/存储/序列化数据有关,而不是与数据本身有关。您应该提供 部分代码,因为它是问题所在。 【参考方案1】:

试试这个

var json=...origin json
var jD = JsonConvert.DeserializeObject<DataOrigin[]>(json);
jD=jD.OrderBy(d => d.Id).ToArray();
    var prevId=string.Empty;
    var list=new List<Data>();
    foreach (var item in jD)
    
                
        if(item.Id!=prevId)
        
            prevId=item.Id;
            list.Add(new Data(Convert.ToInt32(item.Id), item.Profit, item.Telephone, item.Email));
        
        else
        
            var prevIdInt=Convert.ToInt32(prevId);
            var prevItem=list.Last(l =>l.Id==prevIdInt );
            prevItem.MergeItem(item.Profit,item.Telephone,item.Email);
        
    

    var result =  JsonConvert.SerializeObject(list);
    

结果

[
  
    "Id": 1,
    "Profits": [
      33.333,
      21.21
    ],
    "Telephones": [
      "123",
      "43"
    ],
    "Emails": [
      "user1@testmail.com",
      "user11@testmail.com"
    ]
  ,
  
    "Id": 2,
    "Profits": [
      49.001,
      10.1
    ],
    "Telephones": [
      "22",
      "876"
    ],
    "Emails": [
      "user2@testmail.com",
      "user22@testmail.com"
    ]
  
]

public class DataOrigin
    
        public string Id  get; set; 
        public double Profit  get; set; 
        public string Telephone  get; set; 
        public string Email  get; set; 

public class Data

    public int Id  get; set; 
    public  List<double> Profits  get; set; 
    public List<string> Telephones  get; set; 
    public List<string> Emails  get; set; 
    
    public Data(int id,double profit,string phone, string email)
      
         Id=id;
        Profits = new List<double>()profit;
        Telephones = new List<string>()phone;
        Emails = new List<string>()email;
        
    
    public void MergeItem (double profit,string phone, string email)
    
        Profits.Add(profit);
        Telephones.Add(phone);
        Emails.Add(email);
    

【讨论】:

@nitish 欢迎您。请不要忘记接受答案。您可以通过单击我的答案旁边的复选标记来完成。【参考方案2】:

解决办法如下:

变量数据 = [ “身份证”:“1”, “利润”:“33.332999999999998”, “电话”:“123”, “电子邮件”:“user1@testmail.com” , “身份证”:“1”, “利润”:“21.21”, “电话”:“43”, “电子邮件”:“user11@testmail.com” , “身份证”:“2”, “利润”:“49.000999999999998”, “电话”:“22”, “电子邮件”:“user2@testmail.com” , “身份证”:“2”, “利润”:“10.1”, “电话”:“876”, “电子邮件”:“user22@testmail.com” ] 变种温度 = ; data.forEach(x => if (temp[x.Id] == undefined) 临时[x.Id] = temp[x.Id]['Id'] = x.Id temp[x.Id]['利润'] = [] temp[x.Id]['电话'] = [] temp[x.Id]['Email'] = [] temp[x.Id].Profit.push(x.Profit) temp[x.Id].Telephone.push(x.Telephone) temp[x.Id].Email.push(x.Email) ) var finalResponse = [] for (const [key, value] of Object.entries(temp)) finalResponse.push(值)

【讨论】:

如何在c#中按2个标准和子标准对字典进行排序

】如何在c#中按2个标准和子标准对字典进行排序【英文标题】:HowsortDictionaryby2criteriasandsubcriteriainc#【发布时间】:2021-09-2113:43:35【问题描述】:我想先按Key再按Value对myDictionary进行排序。Dictionary<int,double>myDictionary=newDictionar... 查看详情

如何在 swift 中按字母顺序对 JSON 字符串进行排序?

】如何在swift中按字母顺序对JSON字符串进行排序?【英文标题】:howtosortJSONstringalphabeticallyinswift?【发布时间】:2015-05-1214:00:50【问题描述】:我正在使用SwiftyJSON解析来自网络的JSON,然后在tableView中显示这些值。我想添加一个... 查看详情

如何使用 Linq 在 C# 中按 2 个属性对 XML 内容进行排序?

】如何使用Linq在C#中按2个属性对XML内容进行排序?【英文标题】:HowtosortXMLcontentby2AttributesinC#usingLinq?【发布时间】:2021-06-0322:30:40【问题描述】:我是C#新手,想按START属性对内存中的XML进行排序,但我需要考虑到当START_PLUSDAY... 查看详情

如何使用 jQuery 对 JSON 数据进行分页?

】如何使用jQuery对JSON数据进行分页?【英文标题】:HowtousejQuerytopaginateJSONdata?【发布时间】:2011-01-3106:13:32【问题描述】:重复:GoodjquerypaginationplugintousewithjsonData…我的JSON数据如下所示"Table":["Emp_Id":"3","Identity_No":"","Emp_Name":"Jer... 查看详情

如何在 Reactjs 中按升序或降序对数据进行排序?

】如何在Reactjs中按升序或降序对数据进行排序?【英文标题】:HowtosortdatainascendingordescendingorderinReactjs?【发布时间】:2018-10-0915:02:12【问题描述】:我在我的显示组件中导入了产品数据。对于JSON中的每个产品,我使用.map()来显... 查看详情

如何在javascripts中按经纬度距离对数组项进行排序?

】如何在javascripts中按经纬度距离对数组项进行排序?【英文标题】:Howtosortarrayitemsbylongitudelatitudedistanceinjavascripts?【发布时间】:2015-01-0607:19:12【问题描述】:我有以下6个位置的JSON数组。有没有办法根据附近位置在数组中的... 查看详情

如何根据日期对json中的数据进行排序,并在swift中按日期名义总和?

】如何根据日期对json中的数据进行排序,并在swift中按日期名义总和?【英文标题】:howtosortdatafromjsonaccordingtodateandsumnominalbydateinswift?【发布时间】:2019-04-0103:20:26【问题描述】:我想将json数组中的数据按照日期排序,以及与... 查看详情

如何在c#中按两列对DataTable进行排序

】如何在c#中按两列对DataTable进行排序【英文标题】:HowtosortDataTablebytwocolumnsinc#【发布时间】:2013-04-2413:13:23【问题描述】:我有一个如下所示的DataTable;|ID|ItemIndex|ItemValuece895bd9-9a92-44bd-8d79-986f991154a913ae7d714e-a457-41a8-8bb4-b5a0471c3d2... 查看详情

如何通过分页在 Spring Data JPA 中的 SELECT 子句中按别名对投影进行排序?

】如何通过分页在SpringDataJPA中的SELECT子句中按别名对投影进行排序?【英文标题】:HowtosortprojectionbyaliasfromSELECTclauseinSpringDataJPAwithpagination?【发布时间】:2017-10-1502:12:43【问题描述】:我创建了这两个实体来演示我的问题:Owner... 查看详情

如何在pyspark中按字母顺序对嵌套结构的列进行排序?

】如何在pyspark中按字母顺序对嵌套结构的列进行排序?【英文标题】:Howtosortcolumnsofnestedstructsalphabeticallyinpyspark?【发布时间】:2019-09-0611:54:25【问题描述】:我有以下架构的数据。我希望所有的列都应该按字母顺序排序。我想... 查看详情

如何在reactjs/javascript中按值对对象数组进行分组

我有一个具有不同值的对象数组items=[{id:1,category:"cat_1",title:"Mytitle1"},{id:2,category:"cat_2",title:"Mytitle2"},{id:6,category:"cat_1",title:"Anothertitle1"},{id:1,category:"cat_3",title:"Mytitle3"},{id:8,cate 查看详情

在 C# 中按字母顺序对 XML 文档进行排序

】在C#中按字母顺序对XML文档进行排序【英文标题】:SortXMLdocumentalphabeticallyinC#【发布时间】:2022-01-0602:37:09【问题描述】:在C#中,按字母顺序对XML文档进行排序的最佳方法是什么——元素和属性?例如,如果我以b.xml开头,它... 查看详情

在C#中按列对二维数组进行排序

】在C#中按列对二维数组进行排序【英文标题】:SortingtwodimensionalarraybycolumnsinC#【发布时间】:2022-01-2400:09:20【问题描述】:我想对二维数组进行排序。我不想订购第一个维度,而是订购内部维度。例如,如果初始数组是这样的... 查看详情

在 PHP 中按整数键对对象进行排序

】在PHP中按整数键对对象进行排序【英文标题】:sortobjectbyintegerkeyinPHP【发布时间】:2016-11-2700:28:24【问题描述】:我有一个数组,其中ID作为键,并有一个来自与之关联的数据库的名称。我使用它从PHP获取统计信息,以输出到... 查看详情

在 C# 中按名称和日期作为键对字典进行排序? [复制]

】在C#中按名称和日期作为键对字典进行排序?[复制]【英文标题】:SortingaDictionaryinC#bynameanddateaskey?[duplicate]【发布时间】:2018-11-2323:12:34【问题描述】:大家好,我需要你的帮助。我在大学有一项关于对字典进行排序的任务。... 查看详情

如何在javascript中按id嵌套数据过滤和分组?

】如何在javascript中按id嵌套数据过滤和分组?【英文标题】:Howtofilterandgroupedbyidnesteddatainjavascript?【发布时间】:2020-11-0501:44:09【问题描述】:我有JSON数据,其结构如下:constSubSpecs=["_id":"1","nom":"installation","blocks":["idBlock":"1","Art... 查看详情

如何在uitableview的cellForRowAt函数中按标题日期对响应进行排序

】如何在uitableview的cellForRowAt函数中按标题日期对响应进行排序【英文标题】:HowtosortresponsebyheaderdateincellForRowAtfunctioninuitableview【发布时间】:2018-07-2613:12:46【问题描述】:我目前有一个来自json的json响应,它是一个[NSDictionary]... 查看详情

如何在 Json 上对日期数据表进行排序

】如何在Json上对日期数据表进行排序【英文标题】:HowtosortdatedatatableonJson【发布时间】:2017-08-0207:14:44【问题描述】:我有2个输入日期<formid="refresh"method="post"action="income.php"><inputtype="text"id="dari"name="dari"/><inputtype="text... 查看详情