c#json以相同的值重新排列

c#json以相同的值重新排列,c#,json,C#,Json,如何在c中生成下面的json# 这件事 { "fileName1" : [{"key":0, title:"u1"},{"key":2, title:"u1"}], "fileName2" : [{"key":0, title:"u1"},{"key":2, title:"u1"}] } 谢谢你我为你做了一个.NEt提琴 使用系统; 使用System.Collections.Generic; 使用System.Linq; 使用Newtonsoft.Json; 公共课程 { 公共静态vo

如何在c中生成下面的json#

这件事

{ 
 "fileName1" : [{"key":0, title:"u1"},{"key":2, title:"u1"}],
 "fileName2" : [{"key":0, title:"u1"},{"key":2, title:"u1"}]
}

谢谢你

我为你做了一个.NEt提琴

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用Newtonsoft.Json;
公共课程
{
公共静态void Main()
{
字符串输入=@“[
{'file':'fileName1','key':0,标题:'u1'},
{'file':'fileName1','key':2,标题:'u1'},
{'file':'fileName2','key':5,标题:'u1'},
{'file':'fileName2','key':10,标题:'u1'}
]";
var existingList=JsonConvert.DeserializeObject(输入);
var dictionary=newdictionary();
var distinctFileNames=existingList.Select(x=>x.File.Distinct().ToList();
distinctFileNames.ForEach(x=>
{
var fileValue=existingList.Where(m=>m.File==x)
.Select(m=>newrequiredtypefile
{
Key=m.Key,
Title=m.Title
}).ToList();
dictionary.Add(x,fileValue);
});
var reqdJson=JsonConvert.serialized对象(字典);
控制台写入线(reqdJson);
}
}
公共类CurrentType
{
公共字符串文件
{
得到;
设置
}
公钥
{
得到;
设置
}
公共字符串标题
{
得到;
设置
}
}
公共类RequiredTypeFile
{
公钥
{
得到;
设置
}
公共字符串标题
{
得到;
设置
}

}我已经为你做了一个.NEt小提琴

使用系统;
使用System.Collections.Generic;
使用System.Linq;
使用Newtonsoft.Json;
公共课程
{
公共静态void Main()
{
字符串输入=@“[
{'file':'fileName1','key':0,标题:'u1'},
{'file':'fileName1','key':2,标题:'u1'},
{'file':'fileName2','key':5,标题:'u1'},
{'file':'fileName2','key':10,标题:'u1'}
]";
var existingList=JsonConvert.DeserializeObject(输入);
var dictionary=newdictionary();
var distinctFileNames=existingList.Select(x=>x.File.Distinct().ToList();
distinctFileNames.ForEach(x=>
{
var fileValue=existingList.Where(m=>m.File==x)
.Select(m=>newrequiredtypefile
{
Key=m.Key,
Title=m.Title
}).ToList();
dictionary.Add(x,fileValue);
});
var reqdJson=JsonConvert.serialized对象(字典);
控制台写入线(reqdJson);
}
}
公共类CurrentType
{
公共字符串文件
{
得到;
设置
}
公钥
{
得到;
设置
}
公共字符串标题
{
得到;
设置
}
}
公共类RequiredTypeFile
{
公钥
{
得到;
设置
}
公共字符串标题
{
得到;
设置
}

}

嗯,后者看起来像是一本有效的
字典。基本上,我将反序列化为一种类型,将其转换为另一种类型,然后将其序列化。你试过吗?如果是这样的话,你在哪里被卡住了?嗯,后者看起来像是一本有效的
字典。基本上,我将反序列化为一种类型,将其转换为另一种类型,然后将其序列化。你试过吗?如果是的话,你在哪里被卡住了?
{ 
 "fileName1" : [{"key":0, title:"u1"},{"key":2, title:"u1"}],
 "fileName2" : [{"key":0, title:"u1"},{"key":2, title:"u1"}]
}
using System;
using System.Collections.Generic;
using System.Linq;
using Newtonsoft.Json;


public class Program
{
    public static void Main()
    {
        string input = @"[ 
             {'file': 'fileName1', 'key':0, title:'u1'},
             {'file': 'fileName1', 'key':2, title:'u1'},
             {'file': 'fileName2', 'key':5, title:'u1'},
             {'file': 'fileName2', 'key':10, title:'u1'}
        ]";

        var existingList = JsonConvert.DeserializeObject<List<CurrentType>>(input);

        var dictionary = new Dictionary<string,List<RequiredTypeFile>>();


        var distinctFileNames =  existingList.Select(x=> x.File).Distinct().ToList();

        distinctFileNames.ForEach(x=>
                                  {
                                      var fileValue = existingList.Where(m=>m.File==x)
                                        .Select(m => new RequiredTypeFile
                                                {
                                                    Key = m.Key,
                                                    Title = m.Title
                                                }).ToList();
                                      dictionary.Add(x,fileValue);
                                  });

        var reqdJson = JsonConvert.SerializeObject(dictionary);


        Console.WriteLine(reqdJson);
    }
}

public class CurrentType
{
    public string File
    {
        get;
        set;
    }

    public int Key
    {
        get;
        set;
    }

    public string Title
    {
        get;
        set;
    }
}

public class RequiredTypeFile
{
    public int Key
    {
        get;
        set;
    }

    public string Title
    {
        get;
        set;
    }