如何序列化对象并为其指定标识符

时间:2018-01-13 10:25:56

标签: c# json json.net

我正在使用newtonsoft.json来(de)序列化json文件。我想在json文件中分隔我的用户,目前我的json文件是这样的:

[
  {
    "name": "examplename",
    "inviteID": "",
    "inviteCount": "",
    "invited": ""
  },
  {
    "name": "examplename2",
    "inviteID": "",
    "inviteCount": "",
    "invited": ""
  }
]

但是我想给他们这样的标识符:

    [
      "namehere"[
      {      
        "inviteID": "",
        "inviteCount": "",
        "invited": ""
      }
]

我希望这能让用户更容易找到并且不必遍历每个用户,直到找到合适的用户为止。 目前的代码:

 if(foundinviter == false)
                {
                    User theuser = new User
                    {
                        name = inviterUsername,
                        inviteID = inviteID,
                        inviteCount = inviteCount.ToString(),
                        invited = invited
                    };
                    userslist.Add(theuser);
                }

            }

            string updatedjson = JsonConvert.SerializeObject(userslist, Formatting.Indented);
            File.WriteAllText("InviteData/data.json", updatedjson);

1 个答案:

答案 0 :(得分:1)

您的JSON格式不正确,但从我所看到的,这可以做您想要的。

JsonConvert.SerializeObject(userslist.ToDictionary(k => k.name, v => v),Formatting.Indented)

如果你不想要两次提名

[JsonIgnore]
public string name { get; set; }

在财产上 如果名称在集合中不唯一,请执行

userslist.GroupBy(i=>i.Name).ToDictionary(k => k.Key, v => v)

您将收集作为子项。