在Json中生成动态密钥

时间:2018-06-29 09:13:06

标签: c# .net .net-core

在.net核心中,我想生成一个json,如下所示,

{
    "719A070E-4874-E811-9CCE-02152146006A":{
             "userId":"719A070E-4874-E811-9CCE-02152146006A",
              "Name":"Joe"
         }
}

其中719A070E-4874-E811-9CCE-02152146006A是一个ID,该ID因每个用户而异。序列化时如何定义上述json的类?

关于, 乔

2 个答案:

答案 0 :(得分:4)

您可以使用Dictionary进行操作,这些键用作JSON键。例如,此值使用匿名类型,但是您可能应该使用具体的类:

var data = new Dictionary<string, object>
{
    {
        "719A070E-4874-E811-9CCE-02152146006A",  
        new { userId = "719A070E-4874-E811-9CCE-02152146006A", Name = "Joe" }
    }
};

var json = JsonConvert.SerializeObject(data);
Console.WriteLine(json);

输出为:

  

{“ 719A070E-4874-E811-9CCE-02152146006A”:{“ userId”:“ 719A070E-4874-E811-9CCE-02152146006A”,“名称”:“ Joe”}}

为完整起见,使用具体的类看起来像这样。

课程:

public class User
{
    public Guid userId { get; set; }
    public string Name { get; set; }
}

Dictionary

var data = new Dictionary<string, object>
{
    {
        "719A070E-4874-E811-9CCE-02152146006A",
        new User 
        { 
            userId = Guid.Parse("719A070E-4874-E811-9CCE-02152146006A"), 
            Name = "Joe" 
        }
    }
};

答案 1 :(得分:2)

这个问题本身有点令人困惑,但我会尽我所能进行更全面的介绍。 如果您只需要在netcore中生成GUID,则可以使用:

 var guid = Guid.NewGuid();

如果在为用户生成Guid之后需要输出整个JSON字符串,则可以执行以下操作:

  var guid = Guid.NewGuid();
    var user =
    new Dictionary<string, object>
    {
        {
            guid.ToString(),
            new {Userid = guid, Name = "Joe"}
        }
    };
    Console.WriteLine(JsonConvert.SerializeObject(user, Formatting.Indented));

输出为:

output