【问题标题】:Generate Dynamic Key in Json在 Json 中生成动态密钥
【发布时间】:2018-06-29 17:22:36
【问题描述】:

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

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

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

问候, 乔

【问题讨论】:

  • 我没有看到你到目前为止所做的任何努力?您希望为每个用户生成一个 GUID?

标签: c# .net .net-core


【解决方案1】:

您可以使用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","姓名":"乔"}}

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

班级:

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" 
        }
    }
};

【讨论】:

    【解决方案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));
    

    输出是:

    【讨论】:

      猜你喜欢
      • 2016-01-07
      • 2021-06-18
      • 2017-12-07
      • 1970-01-01
      • 1970-01-01
      • 2020-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多